📘 Excel逆引き事典

【VBA】開いている全ブックを配列を使って高速に別ブックとして保存する方法

日々大量のデータを扱う実務では、開いているすべてのワークブックを個々にファイルとして保存することは時間のかかる作業です。この記事では、VBAを使用してこれらのワークブックを高速で配列を使って一括保存する方法をお伝えします。

サンプルコード

VBA
Option Explicit
Sub SaveAllWorkbooksAsSeparateFiles()
    Dim wb As Workbook, wbArray() As Variant
    Dim i As Long, totalWb As Long
    
    ' 開いているワークブックの数をカウント
    totalWb = Application.Workbooks.Count
    
    ' ワークブックを配列に格納
    ReDim wbArray(1 To totalWb)
    For i = 1 To totalWb
        Set wbArray(i) = Workbooks(i)
    Next i
    
    ' 画面更新と警告メッセージの表示を停止
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' 各ワークブックを別ファイルとして保存
    For i = LBound(wbArray) To UBound(wbArray)
        wbArray(i).SaveAs Filename:=ThisWorkbook.Path & "\" & wbArray(i).Name, FileFormat:=xlOpenXMLWorkbook
    Next i
    
    ' 画面更新と警告メッセージの表示を再開
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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