このテーマは一回で終わらせるつもりだったのですが、もう少し書きたくなりました。
|
|
前回紹介した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 ファイルが一個だけだと、機能しません。