編集者の覚書:この質問を断念し、バリエーションをhttps://stackoverflow.com/questions/38766898/saving-excel-worksheets-to-pdf-using-powershellに尋ねました。ExcelワークシートのPDFへのエクスポートを自動化
私は以下のPowerShellスクリプトを実装しようとしていますが、何の不運もありません。誰かが助けてくれますか?
私はこのスクリプトが1つのExcelブックごとに1つのPDFファイルを保存することを知っていますが、この作業が完了すると、各ExcelワークシートをエクスポートしてPDFファイルを分割します。 http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/06/save-a-microsoft-excel-workbook-as-a-pdf-file-by-using-powershell.aspx
$path = "c:\fso"
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
$excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse
$objExcel = New-Object -ComObject excel.application
$objExcel.visible = $false
foreach($wb in $excelFiles)
{
$filepath = Join-Path -Path $path -ChildPath ($wb.BaseName + ".pdf")
$workbook = $objExcel.workbooks.open($wb.fullname, 3)
$workbook.Saved = $true
"saving $filepath"
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
$objExcel.Workbooks.close()
}
$objExcel.Quit()
エラーメッセージから
ExportTo-ExcelPDF.ps1:
The property 'Saved' cannot be found on this object. Verify that the
property exists and can be set.
At C:\ExportExcel.ps1:23 char:2
+ $workbook.Saved = $true
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
saving C:\ExportExcel.pdf
Method invocation failed because [System.__ComObject] does not contain a
method named 'ExportAsFixedFormat'.
At C:\ExportExcel.ps1:25 char:2
+ $workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
You cannot call a method on a null-valued expression.
At C:\ExportExcel.ps1:26 char:2
+ $objExcel.Workbooks.close()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Exception calling "Quit" with "0" argument(s): "Call was rejected by callee.
(Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))"
At C:\ExportExcel.ps1:28 char:1
+ $objExcel.Quit()
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : COMException
最初のエラーは '$ workbook'がnullで、ファイルを開くことができませんでした。 2番目のエラーは '$ workbook'がブックオブジェクトでないか、あるいは[docs](https://msdn.microsoft.com/en-us/library/office/ff198122(v=office.14).aspx)のようです)*「PDFアドインが現在インストールされていないとエラーが発生します。*」というメッセージが表示されます。 3番目のエラーは、 '$ objExcel'が明らかに' $ null'です。エラーの組み合わせは非常に奇妙に見える - それはすべてのPDFファイルを書くか?どのような環境で実行していますか? (ソフトウェアバージョン、どのようにそれを実行しています)? – TessellatingHeckler
PDFファイルがまったく作成されていません。 Server 2012 R2ホスト/ Powershell 4.0/Office 2016 Pro Plusで実行します。 – Ash
@TessellatingHeckler第1のエラーは、必ずしも '$ workbook'が' $ null'であることを意味するものではなく、 '$ workbook'オブジェクトが表すものが' Saved'プロパティを持たない(Set-StrictMode -Version 2以上)。同様に、2番目のエラーは、単にオブジェクトにExportAsFixedFormatメソッドがないことを示します。特定のパラメータが有効にならないため、PDFプラグインがインストールされているかどうかは問題ではありません。 3番目のエラーは '$ objExcel'が' $ null'であることを意味しません。オブジェクトは存在しますが、他の問題の中でも、期待されたメンバーが(一部)存在しません。 – mklement0