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