保存済みを確認してExcelを終了する
未保存ブックが1冊でもあれば中止し、確認後に現在のExcelを終了します。
実行前に確認
- 自動保存や未保存内容の破棄はしません。ほかのブックの終了イベントが終了を取り消すこともあります。
- DisplayAlerts=FalseやSaved=Trueで保存確認を隠す方法は使わないでください。
- 公式仕様とコードを照合した例です。Excel実機での実行は未検証です。業務ブックではなくコピーで試してください。
1サンプルコード
Option Explicit
Sub PracticeAdvanced8004()
Dim wb As Workbook
For Each wb In Application.Workbooks
If Not wb.Saved Then
MsgBox "未保存のブックがあります: " & wb.Name & vbCrLf & "先に保存するか、手動で閉じてください。"
Exit Sub
End If
Next wb
If Not Application.DisplayAlerts Then
MsgBox "確認ダイアログが無効な状態のため中止します。"
Exit Sub
End If
If MsgBox("このExcelで開いているブックをすべて閉じ、Excelを終了しますか?", _
vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
Application.Quit
End Sub図で見る操作の流れ
イメージ図準備、実行する操作、確認する結果の順で示しています。
準備
他の作業を終え、コードを含めてすべてのブックを保存します。動作を見るだけなら最後の確認で[いいえ]を選びます。
操作
未保存ブックが1冊でもあれば中止し、確認後に現在のExcelを終了します。
結果
未保存ブックがあれば名前を表示して止まります。すべて保存済みで[はい]なら、そのExcelインスタンスが終了します。
自動保存や未保存内容の破棄はしません。ほかのブックの終了イベントが終了を取り消すこともあります。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[標準モジュール]へ、この例だけを貼り付けます。
- 2
他の作業を終え、コードを含めてすべてのブックを保存します。動作を見るだけなら最後の確認で[いいえ]を選びます。
- 3
PracticeAdvanced8004を実行し、終了してよい場合だけ[はい]を選びます。
- 4
未保存ブックがあれば名前を表示して止まります。すべて保存済みで[はい]なら、そのExcelインスタンスが終了します。