このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「wordvba excelのシート操作」
という検索キーワードに気づきました。
Word VBA(Visual Basic for Applications)を使って、いずれかのExcelのシートを操作するには、どのようなコードを書けばいいのかを探していた方による検索です。
他のブックのシートを順番に処理するExcelマクロ
まずは、他のブックを開いて、シートを順番に取得するExcelマクロを確認しておきましょう。
C:\TEMPフォルダーに、SAMP.xlsxファイルを用意しておいて、Excelブックに作成した以下のSubプロシージャを実行すると、C:\TEMP\SAMP.xlsxが開かれ、シートが順番に選択され、シート名がメッセージボックスに表示されて、全シートへの処理が終わると、SAMP.xlsxブックが閉じられます。
Dim sh As Object ' Worksheet または Chart With Workbooks.Open("C:\TEMP\SAMP.xlsx")
For Each sh In .Sheets
sh.Select
MsgBox sh.Name
Next sh
.Close
End With
End Sub
Excelのシートを処理するWordマクロを作りたいという場合、上記のExcelマクロを理解できていることが必須です。
Excelシートを順番に処理するWordマクロ
で、同じことをWord VBAから行うには、以下のようなSubプロシージャです。
Dim sh As Object ' Excel.Worksheet または Excel.Chart With CreateObject("Excel.Application")
.Visible = True
With .Workbooks.Open("C:\TEMP\SAMP.xlsx")
For Each sh in .Sheets
sh.Select
MsgBox sh.Name
Next sh
.Close
End With
.Quit
End With
End Sub
Word VBAからExcelを操作するので、VBAのCreateObject関数でExcelのインスタンスを作成して、
With CreateObject("Excel.Application")
Excelを表示しておいてから、
.Visible = True
先のExcelマクロと同じことを行っています。
With .Workbooks.Open("C:\TEMP\SAMP.xlsx")
For Each sh in .Sheets
sh.Select
MsgBox sh.Name
Next sh
.Close
End With
この部分のコードは、先のExcelマクロとほとんど同じですが、少しだけ違います。
With .Workbooks.Open("C:\TEMP\SAMP.xlsx")
と、「Workbooks」の前に存在する「.」を、With文や、他のアプリケーションを操作する処理に慣れていない方の場合、忘れがちでしょうか。
この内側のWith文のあとに、Excelを終了するための、Excel.Application.Quitメソッドが入っているところも、先のExcelマクロには無かった部分です。
.Quit
End With
End Sub
Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAでExcelシートを操作する