「excel vba word 表 senntaku」
という検索キーワードでアクセスがありました。
Excel VBAでWord文書上に存在する表を選択するには、どのようなコードを書けばいいのかを調べていらしたのでしょう。
Wordの表を選択するサンプルマクロ
表の存在するWord文書が開かれている状態で、以下のExcelマクロを実行してください。
On Error GoTo ErrHandl
With GetObject(Class:="Word.Application")
With .ActiveDocument.Tables.Item(1)
.Select
MsgBox .Rows.Count
End With
End With
Exit SubErrHandl:
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の表を選択する