📘 Excel逆引き事典

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

日々大量のExcelファイルを扱う実務では、開いているワークブックの一括削除が非常に便利です。しかし手作業で行うと時間がかかります。この記事では、VBAを使って開いている全てのワークブックを高速に一括削除する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub DeleteAllOpenBooks()
    Dim wb As Workbook, wbArray() As Variant
    Application.ScreenUpdating = False '画面更新停止
    Application.DisplayAlerts = False '警告メッセージ非表示
    ReDim wbArray(1 To Workbooks.Count)
    For i = 1 To Workbooks.Count
        wbArray(i) = Workbooks(i).Name
    Next i
    For i = LBound(wbArray) To UBound(wbArray)
        Workbooks(wbArray(i)).Close SaveChanges:=False '開いているワークブックを閉じる
    Next i
    Application.DisplayAlerts = True '警告メッセージ再表示
    Application.ScreenUpdating = True '画面更新再開
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。