Excelで作業していて、次のような経験はありませんか?
- 編集したのに保存せず閉じてしまった
- 閉じた後に「保存しておけばよかった…」となった
- 複数人で使うファイルで、保存忘れがよく起きる
Excelは閉じるときに「保存しますか?」の確認が出ますが、
慣れているとうっかり「保存しない」を押してしまうこともあります。
そこで今回は、Excelを閉じるときに未保存なら必ず警告を出す(強制確認)マクロを紹介します。
「保存する」「保存せず閉じる」「キャンセル(閉じない)」を選べるようにして、保存忘れを防ぎます。
この記事でできること
- ブックを閉じる直前に、未保存かどうかチェック
- 未保存なら警告を表示して選択させる
- 「閉じるのをやめる(キャンセル)」ができる
- 保存してから閉じる流れにも対応
重要:この仕組みは「ThisWorkbook」に書く
今回の仕組みは「閉じる直前」に動かしたいので、
コードを書く場所は標準モジュールではなくThisWorkbookです。
- Alt + F11 でVBE(VBAエディタ)を開く
- 左側の「Microsoft Excel Objects」から ThisWorkbook をダブルクリック
- そこにコードを貼り付ける

未保存なら警告を出す強制確認マクロ(コピペOK)
以下を ThisWorkbook に貼り付けてください。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim res As VbMsgBoxResult
' 未保存なら True(変更がある状態)
If ThisWorkbook.Saved = False Then
res = MsgBox( _
"このブックは未保存の変更があります。" & vbCrLf & _
"保存してから閉じますか?" & vbCrLf & vbCrLf & _
"[はい]:保存して閉じる" & vbCrLf & _
"[いいえ]:保存せず閉じる" & vbCrLf & _
"[キャンセル]:閉じるのをやめる", _
vbYesNoCancel + vbExclamation, _
"未保存の確認")
Select Case res
Case vbYes
' 保存して閉じる
ThisWorkbook.Save
Case vbNo
' 保存せず閉じる(Excelの確認を出さないために Saved を True にする)
ThisWorkbook.Saved = True
Case vbCancel
' 閉じるのをやめる
Cancel = True
End Select
End If
End Sub
コード解説(初心者向け)
① ThisWorkbook.Saved で「未保存かどうか」が分かる
If ThisWorkbook.Saved = False Then
Saved は「保存済みかどうか」を表します。
編集して保存していない場合は False になります。
② MsgBox の Yes/No/Cancel で選ばせる
vbYesNoCancel + vbExclamation
これで「はい・いいえ・キャンセル」の3択を出せます。
保存忘れ対策ではこの形が一番使いやすいです。
③ 「保存せず閉じる」を選んだときのポイント
ThisWorkbook.Saved = True
これを入れると、Excel標準の「保存しますか?」確認が出なくなります。
(ユーザーが「保存しない」を選んだので、二重に聞かないための工夫です)
④ 「閉じるのをやめる」は Cancel = True
Cancel = True
これを設定すると、ブックは閉じません。
「やっぱり閉じない」を実現できます。
よくあるカスタマイズ
① ブックが未保存(新規作成のまま)の場合は「名前を付けて保存」を出したい
新規作成でまだ保存していないブックは ThisWorkbook.Path が空です。
その場合は、SaveAs を使うと親切です。
If Len(ThisWorkbook.Path) = 0 Then
Application.Dialogs(xlDialogSaveAs).Show
Else
ThisWorkbook.Save
End If
② 警告メッセージをもっと短くしたい
res = MsgBox("未保存です。保存しますか?", vbYesNoCancel + vbExclamation)
③ 特定シートの入力欄だけ変更があったら警告したい
より厳密にやる場合は、変更フラグ(True/False)を持つ方法があります。
ただし記事としては一段難しくなるので、まずは本記事の Saved 判定が簡単でおすすめです。
動作確認の手順
- コードを貼ったら、ブックを .xlsm 形式で保存
- 何かセルを編集する(未保存状態にする)
- ×ボタンなどで閉じる
- 「未保存の確認」が出ることを確認
まとめ:保存忘れ防止は「閉じる直前チェック」が一番効く
保存忘れは、気をつけていても起きるものです。
今回のように閉じる直前に強制確認を入れておくと、事故をかなり減らせます。
- 未保存なら必ず警告
- 保存/保存せず閉じる/キャンセルが選べる
- 運用ブック(共有・定型作業)ほど効果が大きい
ぜひ、重要な業務ブックに導入してみてください。
Excelで作業していて、次のような経験はありませんか?
- 編集したのに保存せず閉じてしまった
- 閉じた後に「保存しておけばよかった…」となった


コメント