Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAでExcelシートを操作する

Word VBAでExcelシートを操作する

このサイト・インストラクターのネタ帳のアクセスログを眺めていて、
「wordvba excelのシート操作」
という検索キーワードに気づきました。

Word VBA(Visual Basic for Applications)を使って、いずれかのExcelのシートを操作するには、どのようなコードを書けばいいのかを探していた方による検索です。

[スポンサードリンク]

他のブックのシートを順番に処理するExcelマクロ

まずは、他のブックを開いて、シートを順番に取得するExcelマクロを確認しておきましょう。

C:\TEMPフォルダーに、SAMP.xlsxファイルを用意しておいて、Excelブックに作成した以下のSubプロシージャを実行すると、C:\TEMP\SAMP.xlsxが開かれ、シートが順番に選択され、シート名がメッセージボックスに表示されて、全シートへの処理が終わると、SAMP.xlsxブックが閉じられます。

Sub 他のブックを開いてシートを順番に取得する()
 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プロシージャです。

Sub WordVBAからExcelシートを操作する()
 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シートを操作する

「Office連携」の記事一覧

検索


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

.