📘 Excel逆引き事典

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

日々の業務では、複数のExcelファイルを開きながら作業することが多いと思います。その中で、特定の情報を一括して取り出す必要がある場合があります。この記事では、開いている全ワークブックを高速に配列として取得し、効率的に処理する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub ExtractAllOpenBooks()
    Dim wb As Workbook, arrWbs() As Variant
    Dim i As Long, j As Long
    ReDim arrWbs(1 To Application.Workbooks.Count)
    
    ' 配列にワークブックを格納する
    For i = 1 To UBound(arrWbs)
        Set wb = Workbooks(i)
        arrWbs(i) = wb.Name
    Next i
    
    ' デバッグ用表示(実際の業務では不要)
    For j = LBound(arrWbs) To UBound(arrWbs)
        Debug.Print arrWbs(j)
    Next j
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
ワークブック名や列番号が正しいか確認してください。また、開いているワークブックがない場合もエラーになる可能性があります。