← コード一覧へ戻る
実務イベント

保存する直前にマクロを自動実行する

保存直前に確認し、「いいえ」で保存を中止します。

実行前に確認

  • イベント内からSaveを再実行すると再帰する恐れがあります。この例では保存メソッドを呼びません。

1サンプルコード

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If MsgBox("変更を保存しますか?", vbYesNo) = vbNo Then Cancel = True
End Sub

図で見る操作の流れ

イメージ図

概念図:保存操作をきっかけに、直前の確認が入ります。

  1. 手動:配置

    ThisWorkbookにWorkbook_BeforeSaveを貼り付ける

  2. 手動:保存操作

    セルを変更し、Ctrl+Sを押す

  3. マクロ:確認

    「変更を保存しますか?」を表示

  4. 分岐

    [はい]→元の保存処理を続行/[いいえ]→Cancel = Trueで中止

F5から実行する通常のマクロではありません。イベント自体はSaveを呼び直しません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
  1. 1

    練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。

  2. 2

    Alt+F11でVBEを開きます。左のプロジェクト一覧でこのブックの[Microsoft Excel Objects]→[ThisWorkbook]をダブルクリックし、コードを貼り付けます。

  3. 3

    F5では実行せず、Excelに戻りセルを変更し、Ctrl+Sを押します。確認で「いいえ」を選ぶと保存を中止します。

使っている機能の公式ドキュメント(Microsoft Learn)