📘 Excel逆引き事典

【VBA】開いている全ブックを配列を使って高速に取得する方法

日々の業務で大量のExcelファイルを扱う場合、一つ一つ開いて情報を確認するのは時間がかかります。この記事では、VBAを使用して開いている全てのワークブックを高速に取得し、効率的に処理を行う方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub GetOpenWorkbooks()
    Dim wbArray() As Workbook
    Dim i As Integer, j As Integer
    ReDim wbArray(1 To Application.Workbooks.Count)
    
    ' 配列にワークブックを格納
    For i = 1 To UBound(wbArray)
        Set wbArray(i) = Workbooks.Item(i)
    Next i
    
    ' ワークブックの情報を表示
    For j = LBound(wbArray) To UBound(wbArray)
        Debug.Print wbArray(j).Name, wbArray(j).Path
    Next j
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。また、ワークブックが開かれていることを確認してください。