投稿者 usako  (社会人) 投稿日時 2023/10/12 09:58:56
以前にVB2013で作成したツールでは、Wordファイルの操作を行うため、
以下のようにWordの遅延バインドを使用しています。

Dim oWord As Object = Nothing

Try
    oWord = GetObject(, "Word.Application")

Catch ex As Exception
    oWord = CreateObject("Word.Application")
End Try

'以下、処理および取得したCOMオブジェクト変数の解放 


ただ、このツールを使用している人から、Wordファイルの処理で
エラーが発生する、という連絡がありました。
例外が発生した時にその内容をログ出力するようにしていたので、
そのログ内容を見ると、以下のようでした。

・例外の種類:System.Exception: ActiveX コンポーネントを作成できません。
・例外の発生場所:CreateObject("Word.Application")の行

また、詳細を確認すると、以下の通りでした。

・あらかじめWordソフトを起動しておけば、エラーは発生しない。
 →おそらく、GetObject(, "Word.Application")でWord.Applicationが
  取得出来たため
・該当PCには元々はOffice2013が入っていたが、何らかの不具合があった
 (付帯的な内容は不明)とのことで、2013のサポートの問題もあり、
 Office2019(H&B)をインストールしたとのこと。
 この時にOffice2013は自動的にアンインストールされたとのこと。
 今回発生したエラーは、Office2019のインストール後に発生したとのこと。
・他のPCではこの問題は発生していないとのこと。

CreateObject("Word.Application")に失敗する原因として、
何が考えられますか?

また、現在遅延バインドを用いている理由は、様々なWordのバージョンに
対応できるようにするためなのですが、現在、Word2010以前のものは
対象外にしようと思っています。
その場合、遅延バインドより、Microsoft.Office.Interop.Wordの参照の方が
よいでしょうか?