ブックを閉じる際にマクロを自動で実行する方法を解説します。
BeforeCloseイベントを使用します。
基本構文
下記のコードを「ThisWorkbook」モジュールに記載すると、
ファイルを閉じようとした際、その直前に中の処理を実行します。
Private Sub Workbook_BeforeClose(Cancel as Boolean) ' ここに実行したい処理を記述 End Sub
プロシージャ名、引数名を変更することはできません。
第1行は変更せずすべてこのままのコードを記述してください。
なお、このBeforeCloseを含めたイベントプロシージャは、
記述するThisworkbookやシートモジュールの上部選択肢から選ぶことが出来ます。


これを選択すると、↓の状態で空のイベントプロシージャが挿入されます。
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
イベントプロシージャの構文はWEB検索で探したりする必要はなく、
使うときにこの選択肢から選べばよいことを覚えておきましょう。
条件によってブックを閉じるのを中止する
引数CancelにTrueを渡すことで、
ブックを閉じること自体をキャンセルすることが出来ます。
例えば以下のようなコードを書くことで、
「保存していない場合は閉じることが出来ないブック」
を設定することが可能です。
Private Sub Workbook_BeforeClose(Cancel as Boolean) If ThisWorkbook.Saved = False Then MsgBox "未保存のためブックを閉じれませんでした。" Cancel = True End If End Sub
イベントを実行させずにブックを閉じる
このイベントはマクロでブックを閉じた場合も実行されます。
ブックを閉じる際にBeforeCloseイベントを実行したくない場合は、
EnableEventsをFalseにしてからCloseメソッドを実行してください。
' BeforeCloseイベントを実行せずにブックを閉じる Application.EnableEvents = False 対象ブック.Close False Application.EnableEvents = True