始めは「オブジェクトが必要です」とは言われなかったのに...
ステップ実行してもどこで発生しているのか解らないので、小さなプログラムを作って試行錯誤した。
■ ケース1 エラーは発生しない
- 動作状況
- Excelマクロ.xlsm のコード
Option Explicit Public Sub Auto_Open() Dim objWord As Object Dim objDocument As Object Dim MacroPath As String MacroPath = ThisWorkbook.Path MsgBox "「Wordマクロ」を起動します。", vbInformation Set objWord = CreateObject("Word.Application") objWord.Visible = True Set objDocument = objWord.Documents.Open(MacroPath & "\Wordマクロ.docm") objWord.Run ("Auto_Open") Set objWord = Nothing Set objDocument = Nothing Application.Quit ThisWorkbook.Close SaveChanges:=False End Sub
- Wordマクロ.docm のコード
Option Explicit Sub Auto_Open() MsgBox "終了します。", vbInformation Application.Quit ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges End Sub
- *1) 当初、このコードは無かった。
Wordマクロ.docm を開いても何も動作しなかったので、「Auto_Open は利かないのかなぁ〜」と思い、後から追加した。
■ ケース2 「オブジェクトが必要です」と言われた
- コードの修正
Word の自動実行は“AutoOpen” の間違いと気が付き、 - 動作状況
- Excelマクロ.xlsm を開く。
- msgbox に応答すると、
- Wordマクロ.docm が開く。
- msgbox に応答すると、
- Wordマクロ.docm が終了する。
- 「オブジェクトが必要です」のメッセージ(文頭の画面)が出る!
■ 編集後記
- 文頭の画像は、昨日、取ったもの。
- しかし今日、この記事を書きながら確認したら、エラーが出ない!
- 再現性がないので、この記事は没にしようと思ったが、本番のマクロ(VBA)で再現テストすると確かに出る。
- 結論は、テストデータでは 再現させることは出来なかった。