Excelファイルを編集した後、保存を忘れて閉じてしまうことは意外とよくあります。特にマクロ付きブック(xlsm)では、ファイルの変更履歴を残したいときに「上書き保存」では少し心配になることもあります。
そんなときに便利なのが、「閉じるときに、別名で自動保存」する仕組みです。これにより、元ファイルを残したまま、編集後の内容をバックアップとして保存しておくことができます。
今回は、マクロを使って「ブックを閉じたタイミングで、自動的に別ファイルとして保存する方法」をご紹介します。
Workbook_BeforeCloseイベントで保存処理を自動化
Excel VBAには、ファイルを閉じる直前に実行されるイベントとして、Workbook_BeforeClose があります。ここに処理を組み込むことで、自動保存が可能になります。
次のようなコードを、「ThisWorkbook」モジュールに記述してください。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim path As String
Dim fileName As String
Dim timeStamp As String
' 日時の文字列を作成(例:20250717_1930)
timeStamp = Format(Now, "yyyymmdd_hhmm")
' 元のパスとファイル名を組み合わせて保存先を決定
path = ThisWorkbook.Path & "¥"
fileName = "Backup_" & timeStamp & ".xlsm"
' 別名で保存(マクロ有効ブック形式)
ThisWorkbook.SaveCopyAs path & fileName
End Sub
このコードを記述する際の手順は次の通りです。
Alt + F11でVBE(VBAエディタ)を開く- 左側の「ThisWorkbook」をダブルクリック
- 上記コードを貼り付けて保存
このマクロは「閉じる前に、現在の内容を指定フォルダに別名保存する」だけで、ブックの通常動作には影響を与えません。
実装するメリット
この方法を実装することで、次のような効果があります。
- 毎回、バックアップを自動で残せるため保存漏れの不安がない
- 上書きせずに別ファイルとして保存するため原本を安全に維持できる
- ファイル名にタイムスタンプを付けることで履歴の管理がしやすい
特に業務で複数人がファイルを扱うような場合、編集ミスを防ぐための保険的な処理として活用できます。
まとめ
マクロを使えば、Excelファイルを閉じるときに自動でバックアップを残すことができます。
今回紹介した方法は、次のようなケースで特に役立ちます。
- ファイルを上書きしたくない
- 履歴をタイムスタンプ付きで残したい
- 閉じるタイミングで処理を自動実行したい
バックアップの保存先やファイル名の形式は自由にカスタマイズ可能です。自分の運用に合わせて使いやすい形に整えていきましょう。
