「Word VBA excelのセルを指定する」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
Word VBAでExcelのセルを指定するには、どのようなコードを書けばいいのかを探していた方による検索です。
Word VBAでExcelのセルを指定するサンプルマクロ
Excelを起動して、1枚目のワークシートとアクティブシートのA1:C1セルに何らかのデータを入力しておいてから、以下のWordマクロを実行してみてください。
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
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への参照を代入したオブジェクト変数から辿るコードにする必要があります。
- Newer:Solidメソッドを持つオブジェクトは?
- Older:AddShapeで塗りつぶしなしに
Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAでExcelのセルを指定するには