Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordの表を選択する

Excel VBAでWordの表を選択する

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

「excel vba word 表 senntaku」
という検索キーワードでアクセスがありました。

Excel VBAでWord文書上に存在する表を選択するには、どのようなコードを書けばいいのかを調べていらしたのでしょう。

Wordの表を選択するサンプルマクロ

表の存在するWord文書が開かれている状態で、以下のExcelマクロを実行してください。

Sub Wordの1つ目の表を選択する()
On Error GoTo ErrHandl

 With GetObject(Class:="Word.Application")

  With .ActiveDocument.Tables.Item(1)
   .Select
   MsgBox .Rows.Count
  End With

 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case 5941
   MsgBox "開かれているWordには表が存在しないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

Word文書上の1つ目の表が選択され、その行数がメッセージボックスに表示されます。

なお、上記のマクロには「Excel VBA」と呼べる箇所はありませんから、VBAが使える環境ならどこからでも実行できます。

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

VBAのGetObject関数を使って、

With GetObject(Class:="Word.Application")

起動しているWord.Applicationへの参照を取得した後は、実質的にWord VBAです。

Word文書上の1つ目の表を表すWordのTableオブジェクトを取得して、

 With .ActiveDocument.Tables.Item(1)

WordのTable.Selectメソッドで選択を行い、

  .Select

選択だけでは何が起きたかわかり辛いため、その表の行数をメッセージボックスに表示しています。

  MsgBox .Rows.Count

拙著『Excel VBAユーザーのためのWord VBA入門(2):Tableの基本編』
の、「9-2. TablesからTableを取得する」で、以下のようなWord VBAのコードを解説しています。

With ActiveDocument.Tables.Item(1)
 .Select
 MsgBox .Rows.Count
End With

このコードで行っているのと同様の処理を行っているのが、本記事で紹介しているExcelマクロの

 With .ActiveDocument.Tables.Item(1)
  .Select
  MsgBox .Rows.Count
 End With

の部分です。

Word VBAであれば、いきなり

With ActiveDocument.Tables.Item(1)

と書けますが、Excel VBAから実行するために、

With GetObject(Class:="Word.Application")

 With .ActiveDocument.Tables.Item(1)

とする必要があります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordの表を選択する

「Office連携」の記事一覧

検索


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

.