Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAで開かれているExcelブックを取得する

Word VBAで開かれているExcelブックを取得する

動作検証バージョン:Windows 11 Home + 64bit Word & Excel バージョン 2405(ビルド17602.20000クイック実行)ベータチャネル

「vba word から 開いているエクセル ファイル 調べる」
といった検索キーワードでアクセスがありました。

[スポンサードリンク]

開かれているExcelブックを取得するサンプルマクロ

以下のWordマクロが参考になるでしょうか。

Sub 開いているExceブックを取得する()
On Error GoTo ErrHandl
  
 With GetObject(Class:="Excel.Application")
  
  Dim xl_bk As Object
  For Each xl_bk In .Workbooks
   Debug.Print xl_bk.Name
  Next

 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Excelが起動していないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

実行すると、開かれているExcelブックの名前がイミディエイトウィンドウに出力されます。

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

VBAのGetObject関数を使って起動済みのExcelへの参照を取得したあとは、

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

実質的にExcel VBAです。上記のWordマクロの、

With GetObject(Class:="Excel.Application")
 Dim xl_bk As Object
 For Each xl_bk In .Workbooks
  Debug.Print xl_bk.Name

の部分は、Excel VBAであれば、

 Dim xl_bk As Workbook
 For Each xl_bk In Workbooks
  Debug.Print xl_bk.Name

と書けます。
Excel VBAとの違いや注意点は以下のとおりです。

上記のWordマクロでは、Excelへの参照設定が行われていないことを考慮して、オブジェクト変数xl_bkを「As Object」と宣言しています。

 Dim xl_bk As Object

また、Workbooksプロパティは、Word VBAからの場合は、Excel.Applicationを経由しないと取得できませんから、「Workbooks」の直前の「.」を忘れないように書く必要があります。

With GetObject(Class:="Excel.Application")
 Dim xl_bk As Object
 For Each xl_bk In .Workbooks

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAで開かれているExcelブックを取得する

「Office連携」の記事一覧

検索


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

.