Excelでよくあるトラブルの1つが、保存忘れです。
- 編集したのに保存せず閉じてしまった
- 閉じる確認で「保存しない」を押してしまった
- 共有ファイルで、最後の編集が保存されていなかった
こうした事故を防ぐ一番確実な方法は、
閉じるときに自動で保存してしまう(強制保存)ことです。
そこで今回は、Excelを閉じる直前に強制保存するVBAを紹介します。
未保存の変更があれば自動保存し、もし「まだ一度も保存していない新規ブック」なら、名前を付けて保存を促す形にします。
この記事でできること
- ブックを閉じる直前に自動で保存(強制保存)
- 未保存の変更があるときだけ保存する
- 新規ブック(未保存ファイル)の場合は「名前を付けて保存」を出す
- エラー時でもExcelの設定を壊さない安全な書き方
重要:この仕組みは「ThisWorkbook」に書く
「閉じるときに自動で動かす」ため、コードはThisWorkbookに書きます。
- Alt + F11 でVBE(VBAエディタ)を開く
- 左側「Microsoft Excel Objects」→ ThisWorkbook をダブルクリック
- コードを貼り付ける

閉じるときに強制保存するマクロ(基本・コピペOK)
まずは、すでに保存済みのブック(パスがあるブック)を想定した最もシンプルな例です。
未保存の変更があるときだけ自動保存します。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo ErrHandler
' 未保存の変更があるときだけ保存
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
End If
Exit Sub
ErrHandler:
MsgBox "強制保存でエラーが発生しました。" & vbCrLf & _
"番号:" & Err.Number & vbCrLf & _
"内容:" & Err.Description, vbExclamation
End Sub
実務向け:新規ブック(まだ保存していない)にも対応する版
新規作成しただけのブックは、ThisWorkbook.Path が空です。
この場合、Save では保存先が無いので、名前を付けて保存を促す必要があります。
以下は、保存済みブックは自動保存し、新規ブックなら「名前を付けて保存」を表示する実務向けコードです。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error GoTo ErrHandler
' 未保存の変更があるときだけ処理
If ThisWorkbook.Saved = False Then
' まだ一度も保存していない(新規ブック)場合
If Len(ThisWorkbook.Path) = 0 Then
' 名前を付けて保存ダイアログを表示
' ※キャンセルされた場合は閉じるのを中止
If Application.Dialogs(xlDialogSaveAs).Show = False Then
Cancel = True
Exit Sub
End If
Else
' 既に保存済みのブックは、そのまま上書き保存
ThisWorkbook.Save
End If
End If
Exit Sub
ErrHandler:
MsgBox "強制保存でエラーが発生しました。" & vbCrLf & _
"番号:" & Err.Number & vbCrLf & _
"内容:" & Err.Description, vbExclamation
End Sub
コード解説(初心者向け)
① Saved = False のときだけ保存する
If ThisWorkbook.Saved = False Then
「編集したのに保存していない状態」だけを対象にすることで、不要な保存を減らせます。
② Path が空なら「未保存(新規)」
If Len(ThisWorkbook.Path) = 0 Then
保存先が存在しないため、SaveAsが必要です。
③ SaveAsダイアログをキャンセルしたら閉じない
If Application.Dialogs(xlDialogSaveAs).Show = False Then
Cancel = True
End If
強制保存の目的は保存忘れ防止なので、
キャンセルされたら閉じるのを止めるのが安全です。
よくある注意点(運用前に必ず確認)
① 「保存したくない」作業も強制で保存される
このマクロを入れると、基本的に編集した内容は保存されます。
「試しに編集しただけ」「一時的に見ただけで保存したくない」という運用には向きません。
その場合は、前回の「未保存なら警告して選ばせる」方式がおすすめです。
② 共有ファイル・読み取り専用には注意
読み取り専用で開いている場合や、権限がない場合は保存に失敗します。
そのときに備えて、記事のコードではエラー表示を入れています。
動作確認の手順
- このブックを .xlsm 形式で保存
- セルを編集(未保存状態にする)
- ×ボタンなどで閉じる
- 自動で保存されて閉じることを確認
まとめ:強制保存は「保存忘れ事故」を確実に防げる
閉じるときに強制保存する仕組みを入れておくと、保存忘れを限りなくゼロにできます。
- 閉じる直前に未保存かチェック
- 保存済みブックは自動上書き保存
- 新規ブックは「名前を付けて保存」を出す
- キャンセルされたら閉じない(安全運用)
重要な業務ブックや、運用が決まっているファイルには特におすすめです。
ぜひ導入してみてください。


コメント