PowerShell で Excel ファイルを変換

PC で何かの一覧表を作るとしたら、Excel を使って .xlsx 形式ないし .xls 形式で保存するケースが多いと思います。

しかし、その一覧表を利用する作業をスクリプトで自動化するならば、CSV 形式の方が扱いやすいのではないでしょうか。

 

Excel でファイルを開いて「名前を付けて保存」をすれば、CSV 形式だけでなく様々なファイル形式で保存できます。

が、敢えて PowerShell で変換用スクリプトを書いてみました。

 





   




   

 

「特定のシートをCSVに変換」と、「ブック全体を PDF に変換」の2種類です。

そのまま PowerShell に貼り付けるのではなく、.ps1 形式で保存してから実行してください。

(Windows 7 Enterprise RTM に、Office 2013 Professional Plus をインストールした環境で動作確認しました。)

 

 

//// <以下、特定のシートをCSVに変換するスクリプト> //////////

$F = Read-Host "対象 Excel ファイルの完全なパス"
$S = Read-Host "対象シート名"
$C = Read-Host "変換後 CSV ファイルの完全なパス"

$E = New-Object -ComObject Excel.Application
$E.Workbooks.open("$F")
$E.DisplayAlerts = $false
$W = $E.Worksheets.Item("$S")
$W.SaveAs("$C",6)
$E.Workbooks.Close()
$E.Quit()

//// <以上> ////////////////////////////////////////////////////

 

 

//// <以下、ブック全体を PDF に変換するスクリプト> ///////////

$F = Read-Host "対象 Excel ファイルの完全なパス"
$P = Read-Host "変換後 PDF ファイルの完全なパス"
$E = New-Object -ComObject Excel.Application
$B = $E.workbooks.open("$F")
$B.ExportAsFixedFormat(0,"$P")
$E.Workbooks.Close()
$E.Quit()

//// <以上> ////////////////////////////////////////////////////

 

 

さらに Get-ChildItem コマンドレットや While 構文 を組み合わせれば、「特定ディレクトリ配下の Excel ファイルを一括変換」ということもできそうです。

ファイルの数が多く、一つ一つ開いて「名前を付けて保存」するのが面倒な場合に便利だと思います。