niszetの日記

細かい情報を載せていくブログ

PowerShellでWord文書をpdfに変換する際に参考にしたサイト

少しだけトラブったのでメモを残します。

Wordからpdfファイルを生成する際、手でやるのは大変なのでバッチでやりたいと考えました。Windows上での使用が前提なので、PowerShellで記述例がないかを探していました。下記の記事のコードがほぼそのまま利用できました(tmpディレクトリはワーキングディレクトリに変更した)

projectgroup.info

このコードを実行する際、このシステムではスクリプトの実行が無効になっているため、...というエラーが出ました。権限の問題のようで、調べて下記の記事にあたり、実行ポリシーを変更しました(-Scope Processを指定する方法です)。この前に管理者権限での実行もしましたがうまくいかず(変更後は試していません)

qiita.com

この変更により実行可能となりましたが、今度は以下のエラーとなりました。

"Visible" の設定中に例外が発生しました: "型 'Microsoft.Office.Interop.Word.ApplicationClass' の COM オブジェクトをイン
ターフェイス型 'Microsoft.Office.Interop.Word._Application' にキャストできません。IID '{00020970-0000-0000-C000-0000000
00046}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため
、この操作に失敗しました: 要素が見つかりません。 (HRESULT からの例外:0x8002802B (TYPE_E_ELEMENTNOTFOUND))。"

このエラーの内容で検索して、下記の記事にあたり、上から試そうとしたところ、最上段のOfficeの修復の対応で問題が解決しました。

elleneast.com

これは割とあるエラーのようで、エクセルなどでもヒットしますね。

qiita.com

Officeの修復については下記のページにある手順で進めました。

support.microsoft.com

クイック修復で直りました。数分待ちます。

最初の記事にあるcmdからbatを呼ぶ方法では権限の設定を変える必要があったので、そちらはやらず、これらを設定後、PowerShellを起動し、対象のディレクトリ上で.\mkpdf.ps1のように.\をファイル名に付けた状態で実行して実行できることを確認しました。 また、ps1のファイルを右クリックしてpowershellで実行でも同様に動くことを確認しました。

今のところ完全自動でやる必要まではないのですが、完全自動でやる場合は権限の変更が追加で必要かと思っています。ひとまず出来たので、至った手順とトラブルについてまとめておきました。