Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordのDocumentオブジェクトを変数に

Excel VBAでWordのDocumentオブジェクトを変数に

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel & Word(バージョン2207 ビルド15427.20210 Microsoft Store)

「EXCEL VBA word document を変数に入れる」
「エクセルvba 開いてあるワードをオブジェクト変数にセット」
といった検索キーワードで、時折アクセスがあります。

Word.Documentを変数に代入するサンプルマクロ

Word文書を開いておいてから、以下のExcelマクロを実行してください。

Sub WordのDocumentオブジェクトを変数に()
On Error GoTo ErrHandl

 Dim wd_app As Object
 Set wd_app = GetObject(Class:="Word.Application")

 Dim wd_doc As Object
 Set wd_doc = wd_app.ActiveDocument

 Stop

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case 4248
   MsgBox "Wordファイルが開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

Stopステートメントで中断したら、VBEのメニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示してください。

上図のとおりオブジェクト変数wd_docに、WordのApplication.ActiveDocumentプロパティで取得した、Word.Documentオブジェクトが格納されていることを確認できます。

サンプルマクロで行っている処理について

純粋なWord VBAならば、

Dim doc As Document
Set doc = ActiveDocument

のように、グローバルメンバーのActiveDocumentプロパティを使って、いきなりDocumentオブジェクトを取得できますが、
「EXCEL VBA word document を変数に入れる」
「エクセルvba 開いてあるワードをオブジェクト変数にセット」
ですから、

Word.Application
 └ Word.Document

という階層を辿ってDocumentオブジェクトを取得する必要があります。

上記のExcelマクロでは、VBAのGetObject関数を使って起動済みのWord.Applicationへの参照情報をオブジェクト変数wd_appに代入しておいてから、

Dim wd_app As Object
Set wd_app = GetObject(Class:="Word.Application")

Word.Applicationオブジェクトに用意されているActiveDocumentプロパティを使って、

Dim wd_doc As Object
Set wd_doc = wd_app.ActiveDocument

アクティブなWord.Documentオブジェクトへの参照情報をオブジェクト変数wd_docに代入しています。

最終更新日時:2022-09-01 06:12

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordのDocumentオブジェクトを変数に

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.