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

ブックを閉じる直前に自動実行する(Auto_Closeを使う場合)

手動でブックを閉じるとAuto_Closeでメッセージを表示します。

実行前に確認

  • Auto_CloseではCancel引数を使えません。VBAのCloseでは通常実行されないため、通常はWorkbook_BeforeCloseを使います。
  • この例の実際のExcelでの実行は未検証です。練習用ブックで試し、保存確認では内容を確認してください。マクロのセキュリティ設定や組織のルールには従ってください。

1サンプルコード

Public Sub Auto_Close()
    MsgBox "ブックを閉じます。"
End Sub

手動で閉じる場合と、マクロから閉じる場合

上のコードはAuto_Closeだけを使う練習例です。マクロを実行できる練習用ブックでの仕様を整理した表で、実際のExcelで実行した結果ではありません。

閉じる前の処理を選ぶための比較
確認することAuto_Close(上の例)Workbook_BeforeClose
コードを置く場所標準モジュールThisWorkbook
Excelから手動で閉じる閉じる際にメッセージを表示する閉じる前にイベントの処理を行う
VBAのWorkbook.Closeで閉じる自動では実行されないイベントが有効なら処理を行う
閉じる操作の取り消しCancel引数はない。上のMsgBoxは閉じるかどうかの質問ではないCancel = Trueで中止し、ブックを開いたままにできる

「いいえ」を選んだら閉じるのをやめたい場合は、Workbook_BeforeCloseで閉じる操作を取り消す例へ進んでください。保存確認は別の仕組みです。メッセージが出ても、保存や終了の完了を意味しません。

既存のAuto_CloseをVBAから明示的に呼ぶ方法はRunAutoMacrosです。ただし、呼び出す処理とブックを閉じる処理は別です。この練習例には追加せず、まず手動操作で仕組みを確認します。新しく閉じる前の確認を作る場合は、取消可能なBeforeCloseを検討してください。

VBAから閉じたときの仕様を公式資料で確認(Workbook.Close)

閉じる操作の取り消しを公式資料で確認(BeforeClose)

図で見る操作の流れ

イメージ図

コードの動きを表した概念図です。実際のExcel画面ではありません。

  1. 手動:標準モジュールへ貼る

    Public Sub Auto_Closeを記述する

  2. 手動:Excelから閉じる

    F5ではなく、ブックを手動で閉じる

  3. マクロ:メッセージ表示

    「ブックを閉じます。」と表示する

保存確認は別途判断します。Auto_CloseにCancel引数はなく、VBAのCloseからは通常実行されません。

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

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

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

  2. 2

    Alt+F11でVBEを開きます。[挿入]→[標準モジュール]を選び、コードを貼り付けます。

  3. 3

    F5では実行せず、Excelから手動でこのブックを閉じます。「ブックを閉じます。」と表示されます。保存確認は別途判断します。

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