「EXCEL VBA word document を変数に入れる」
「エクセルvba 開いてあるワードをオブジェクト変数にセット」
といった検索キーワードで、時折アクセスがあります。
Word.Documentを変数に代入するサンプルマクロ
Word文書を開いておいてから、以下のExcelマクロを実行してください。
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 SubErrHandl:
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
- Newer:FILTER関数でn行ごとにデータを抽出する
- Older:vbCrLfの文字コードは?
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordのDocumentオブジェクトを変数に