ブックを閉じる直前に自動実行する(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を検討してください。
図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
手動:標準モジュールへ貼る
Public Sub Auto_Closeを記述する
手動:Excelから閉じる
F5ではなく、ブックを手動で閉じる
マクロ:メッセージ表示
「ブックを閉じます。」と表示する
保存確認は別途判断します。Auto_CloseにCancel引数はなく、VBAのCloseからは通常実行されません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する3つの手順で、コードの使い方を確認できます
- 1
練習用のブックをExcelマクロ有効ブック(.xlsm)で保存します。
- 2
Alt+F11でVBEを開きます。[挿入]→[標準モジュール]を選び、コードを貼り付けます。
- 3
F5では実行せず、Excelから手動でこのブックを閉じます。「ブックを閉じます。」と表示されます。保存確認は別途判断します。