続・PowerShell で Excel ファイルを変換

このテーマは一回で終わらせるつもりだったのですが、もう少し書きたくなりました。

 





   




   

 

前回紹介した2つのスクリプトには、どこにも「CSV」や「PDF」という文言が書いてありません。

ではなぜ CSV 形式や PDF 形式に変換できるのかというと、数値で示しているからです。

 

 

CSV に変換する処理を行っているのは「$W.SaveAs("$C",6)」ですが、この「6」という数値が CSV 形式を示しています。

その他のファイル形式については、「XlFileFormat 列挙 (Excel)」を参照してください。

なお、Office のバージョンが 2007 以降の場合、.xls 形式に変換するためには「-4143」ではなく「56」を使います。

 

 

また、PDF に変換する処理を行っているのは「$B.ExportAsFixedFormat(0,”$P”)」ですが、この「0」という数値が PDF 形式を示しています。

その他のファイル形式は、「XlFixedFormatType 列挙 (Excel)」にある通り「1」が示す XPS 形式だけです。

 

 

おまけ

//// <以下、特定ディレクトリ配下の全 Excel ファイルを PDF に変換するスクリプト> ///////////
$D = Read-Host "対象ディレクトリ"

$T = "*.xls*"

 

$L = Get-ChildItem -Path $D -Recurse -Include $T

$S = $L | Select-object -Property FullName

 

$M = $S.Length
$C = 0

 

While ($C -lt $M) {

 

$F = $S[$C].Fullname
$N = $F.Split(".")
$P = $N[0] + ".pdf"

 

$E = New-Object -ComObject Excel.Application
$B = $E.workbooks.open("$F")
$B.ExportAsFixedFormat(0,"$P")
$E.Workbooks.Close()
$E.Quit()

 

$C++

 

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

 

 

・上記スクリプトは、そのまま PowerShell に貼り付けるのではなく、.ps1 形式で保存してから実行してください。

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

・拡張子「.xlsx」と「.xls」が混在していても大丈夫です。

・サブディレクトリ配下の Excel ファイルも変換対象となります。

・ファイル名の、拡張子より前の部分は変化しません。

・変換対象の Excel ファイルが一個だけだと、機能しません。