【VBA】ブックを閉じた時にマクロを自動実行する

ブックを閉じる直前
 ・マクロを自動的に実行
できます!

BeforeCloseイベントを利用することで
実現します!
※Before(前に)Close(閉じる)イベントです。

PR

BeforeCloseイベントとは

ブックを閉じる操作をした際に、閉じる直前に発生するイベントです。

BeforeCloseイベントが発生すると、
 ・Excelが
 ・Subプロシージャ「Workbook_BeforeClose」を
 ・自動的に実行
してくれます。

よって
 ・Subプロシージャ「Workbook_BeforeClose」を作成することで
 ・ブックを閉じる操作をした際に、閉じる直前にマクロが自動実行される
ようになります。

Subプロシージャ「Workbook_BeforeClose」の中に、「ブックを閉じる直前に自動実行したい処理」を記述します。


Subプロシージャ「Workbook_BeforeClose」は
 ・「ThisWorkbook」モジュール内に作成
する必要があります。

「ThisWorkbook」モジュール
「ThisWorkbook」モジュール
PR

VBAコード

ここでは例として
 ・デスクトップ配下の「sampl_001.xlsm」の
 ・「ThisWorkbook」モジュール内のSubプロシージャ「Workbook_BeforeClose」の中に
 ・VBAコードを記述
します。

デスクトップ配下の「sampl_001.xlsm」
デスクトップ配下の「sampl_001.xlsm」

記述するVBAコードは
 ・メッセージ「本当にブックを閉じてよいですか?」を表示
 ・Noをクリックした場合、閉じるのをキャンセル
 ・メッセージ「閉じるのをキャンセルしました!」を表示
とします。

「ThisWorkbook」モジュールの下記のプルダウンに「Workbook」と「BeforeClose」を指定にすれば、Subプロシージャ「Workbook_BeforeClose」が自動的に作成されます。

自動的に作成されたSubプロシージャ「Workbook_BeforeClose」
自動的に作成されたSubプロシージャ「Workbook_BeforeClose」


自動的に作成されたSubプロシージャ「Workbook_BeforeClose」の中に、VBAコードを記述します。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If MsgBox("本当にブックを閉じてよいですか?", vbYesNo) = vbNo Then
        '閉じるのをキャンセル
        Cancel = True
        MsgBox ("閉じるのをキャンセルしました!")
    End If
    
End Sub

引数「Cancel」に「True」を設定することで、閉じるのをキャンセルできます(5行目)。

PR

実行結果

ブックを閉じる直前にマクロを自動実行できました。

デスクトップ配下の「sampl_001.xlsm」 を閉じると
 ・メッセージ「本当にブックを閉じてよいですか?」が表示
されました。

実行結果①
実行結果①


またNoをクリックした場合
 ・ 閉じるのがキャンセルされ
 ・メッセージ「閉じるのをキャンセルしました!」が表示
されました。

実行結果②
実行結果②
PR

参考

BeforeCloseイベントの詳細については、公式サイトをご確認ください。

タイトルとURLをコピーしました