ディレクトリとサブディレクトリ内のすべての.docファイルと.docxファイルを検索し、それぞれをPDF形式に変換するコードを実行しようとしています。
以下のコードは、これらのディレクトリにpdfのインスタンスがない場合、つまり初めてのみ機能する場合にのみ機能します。それ以降は次のように失敗します。
「2」引数で「SaveAs」を呼び出す際の例外:「コマンドが失敗しました」C:\ convert \ convertword.ps1:12 char:13 + $ doc.saveas <<<<($ path、$ wdFormatPDF)+ CategoryInfo :NotSpecified:(:) []、MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation
以前に作成したPDFを削除してPSを再実行すると、正常に機能します。SaveAs
したがって、関数から欠落しているスイッチまたはパラメーターがあり、それが何らかの理由で上書きを強制していると想定することしかできませんか?
$wdFormatPDF = 17
$word = New-Object -ComObject word.application
$word.visible = $false
$folderpath = "c:\convert\*"
$fileTypes = "*.docx","*doc"
Get-ChildItem -path $folderpath -recurse -include $fileTypes |
foreach-object `
{
$path = ($_.fullname).substring(0,($_.FullName).lastindexOf("."))
"Converting $path to pdf ..."
$doc = $word.documents.open($_.fullname)
$doc.saveas($path, $wdFormatPDF)
$doc.close()
}
$word.Quit()