PowerShellでCSV(カンマ区切り)データをExcelに貼り付ける

コンピュータ

普通にCSVファイルをインポートしてExcelで加工するのであれば、テキストファイルのインポート機能を使えば良いのですが、PowerShellスクリプトにすることで、PowerShellでデータを加工することが出来ます。定型的な作業をスクリプト化出来ると便利で良いと思います。

スクリプトの中身は、クリップボード内のカンマ区切りのテキストをタブ区切りに変換しています。

使い方
CSV形式のファイルをメモ帳などで開き中身をコピーしPowerShellで以下のスクリプトを実行。Excelのワークシートに貼り付ける。

ファイル名:CsvToClip.sp1

<#
.SYNOPSIS
クリップボード内のカンマ区切りのデータをタブ区切りに置き換える

.DESCRIPTION
Excelへ貼り付け用

.EXAMPLE
CsvToClip.ps1

#>

$ErrorActionPreference = "STOP"

$tmp = New-TemporaryFile

Get-Clipboard -Format Text | Out-File -FilePath $tmp.FullName

Import-Csv -LiteralPath $tmp.FullName |
% -Begin {
    $i = 0
} -Process {
    $v = $_
    if ($i -eq 0) {
            ($v.psobject.properties.name) -Join "`t"
    }
    ($v.psobject.properties.name | % { $v.$_ }) -Join "`t"

    $i++
} | clip
クリップボード→スクリプト→クリップボードとするために、色々回りくどい作りになってしまいました。
CSVファイルをスクリプトで読み込むようにした方が素直な感じになります。
また、Import-CSVの結果から項目名と値を取得する方法も回りくどい感じです。
こちらは別な方法を見つけることは出来ませんでした。簡易版はこちら
Powershellでクリップボードを操作するサンプル
ちょっとした処理でもコードが長くなりがちなPowershellですが、クリップボードには簡単にアクセス出来るようです。 クリップボードへ文字列の出力とクリップボードから文字列を取り出すだけの面白味にかけるサンプルを作ってみました。 サンプル...

Excelのテキストインポート

コメント