動作検証バージョン: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
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Excelが起動していないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
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 SubErrHandl:
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
[スポンサードリンク]
- Newer:「.Bookmarks("\EndOfDoc").Range.Paste」とは
- Older:Kindle本 ゴールデンウィークセールで5月9日(木)の23時59分まで拙著5冊が約50%OFFに
Home » ワードマクロ・Word VBAの使い方 » Office連携 » Word VBAで開かれているExcelブックを取得する