📘 Excel逆引き事典

【VBA】開いている全ブックをバックグラウンドで別ブックとして保存する方法

日々の業務では、複数のExcelファイルを開きながら作業することが多いと思います。しかし、これらのファイルを個々に保存するのは手間がかかります。この記事では、開いているすべてのワークブックをバックグラウンドで別ファイルとして自動的に保存するVBAマクロを作成します。

サンプルコード

VBA
Option Explicit
Sub SaveAllBooksAsSeparateFiles()
    Dim wb As Workbook, newWb As Workbook
    Application.ScreenUpdating = False '画面更新停止
    For Each wb In Workbooks
        If Not wb.Name Like "Book*" Then '開いているすべてのブックを処理するが、新しいブックは除外
            Set newWb = Workbooks.Add '新規ワークブックを作成
            Application.DisplayAlerts = False '警告オフ
            wb.SaveCopyAs ThisWorkbook.Path & "\" & wb.Name & "_backup.xlsx" 'バックアップファイルとして保存
            Application.DisplayAlerts = True '警告オン
            newWb.Close SaveChanges:=False '新規ワークブックを閉じる
        End If
    Next wb
    Application.ScreenUpdating = True '画面更新再開
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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