Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAでExcelのセルを指定するには

Word VBAでExcelのセルを指定するには

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

「Word VBA excelのセルを指定する」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

Word VBAでExcelのセルを指定するには、どのようなコードを書けばいいのかを探していた方による検索です。

[スポンサードリンク]

Word VBAでExcelのセルを指定するサンプルマクロ

Excelを起動して、1枚目のワークシートとアクティブシートのA1:C1セルに何らかのデータを入力しておいてから、以下のWordマクロを実行してみてください。

Sub Excelのセルを指定する()
On Error GoTo ErrHandl

 With GetObject(Class:="Excel.Application")
  MsgBox .Worksheets(1).Cells(1, "A").Value
  MsgBox .Worksheets(1).Range("B1").Value
  MsgBox .Worksheets(1).Range("B1").Offset(0, 1).Value
  MsgBox .Cells(1, "A").Value
  MsgBox .Range("B1").Value
  MsgBox .Range("B1").Offset(0, 1).Value
 End With

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

1枚目のワークシートのA1:C1セルに入力されているデータと、アクティブシートのA1:C1セルに入力されているデータが、順番にメッセージボックスに表示されます。

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

Excel VBAで以下のSubプロシージャを実行すると、

Sub sample()
 MsgBox Worksheets(1).Cells(1, "A").Value
 MsgBox Worksheets(1).Range("B1").Value
 MsgBox Worksheets(1).Range("B1").Offset(0, 1).Value
 MsgBox Cells(1, "A").Value
 MsgBox Range("B1").Value
 MsgBox Range("B1").Offset(0, 1).Value
End Sub

1枚目のワークシートのA1:C1セルに入力されているデータと、アクティブシートのA1:C1セルに入力されているデータが、順番にメッセージボックスに表示されます。Excel VBAをご存知なら、難しくないコードです。

このコードをWord VBAから実行できるようにしたのが、先ほどのSubプロシージャです。

VBAのGetObject関数を使って、起動済みのExcel.Applicationオブジェクトへの参照を取得しておいてから、

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

Excelのオブジェクトを利用しています。

 MsgBox .Worksheets(1).Cells(1, "A").Value
 MsgBox .Worksheets(1).Range("B1").Value
 MsgBox .Worksheets(1).Range("B1").Offset(0, 1).Value
 MsgBox .Cells(1, "A").Value
 MsgBox .Range("B1").Value
 MsgBox .Range("B1").Offset(0, 1).Value

Excel VBAでセルを取得する際に利用するメジャーなプロパティCells・Range・Offsetを利用しています。

Excel VBAとの違い

純粋なExcel VBAであれば、

 MsgBox Worksheets(1).Cells(1, "A").Value
 MsgBox Worksheets(1).Range("B1").Value
 MsgBox Worksheets(1).Range("B1").Offset(0, 1).Value
 MsgBox Cells(1, "A").Value
 MsgBox Range("B1").Value
 MsgBox Range("B1").Offset(0, 1).Value

で済みますが、Word VBAからの場合、GetObject関数で取得したExcel.Applicationへの参照から辿る必要があり、

With GetObject(Class:="Excel.Application")
 MsgBox .Worksheets(1).Cells(1, "A").Value
 MsgBox .Worksheets(1).Range("B1").Value
 MsgBox .Worksheets(1).Range("B1").Offset(0, 1).Value
 MsgBox .Cells(1, "A").Value
 MsgBox .Range("B1").Value
 MsgBox .Range("B1").Offset(0, 1).Value

With文の中でExcel VBAのプロパティの前に「.」が必須です。

With文ではなくオブジェクト変数を使う場合、

Set xl_app =  GetObject(Class:="Excel.Application")
MsgBox xl_app.Worksheets(1).Cells(1, "A").Value
MsgBox xl_app.Worksheets(1).Range("B1").Value
MsgBox xl_app.Worksheets(1).Range("B1").Offset(0, 1).Value
MsgBox xl_app.Cells(1, "A").Value
MsgBox xl_app.Range("B1").Value
MsgBox xl_app.Range("B1").Offset(0, 1).Value

のように、Excel.Applicationへの参照を代入したオブジェクト変数から辿るコードにする必要があります。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAでExcelのセルを指定するには

「Office連携」の記事一覧

検索


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

.