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

BeforeSaveイベントを利用することで
実現します!
※Before(前に)Save(保存)イベントです。
BeforeSaveイベントとは
ブックを保存する操作をした際に、保存する直前に発生するイベントです。
BeforeSaveイベントが発生すると、
・Excelが
・Subプロシージャ「Workbook_BeforeSave」を
・自動的に実行
してくれます。
よって
・Subプロシージャ「Workbook_BeforeSave」を作成することで
・ブックを閉じる操作をした際に、保存する直前にマクロが自動実行される
ようになります。
Subプロシージャ「Workbook_BeforeSave」は
・「ThisWorkbook」モジュール内に作成
する必要があります。

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

記述するVBAコードは
・「名前を付けて保存」の場合は保存をキャンセル
・メッセージ『「名前を付けて保存」をキャンセルしました!』を表示
とします。
自動的に作成されたSubプロシージャ「Workbook_BeforeSave」の中に、VBAコードを記述します。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'「名前を付けて保存」かどうかを確認
If SaveAsUI Then
'保存をキャンセル
Cancel = True
MsgBox ("「名前を付けて保存」をキャンセルしました!")
End If
End Sub
実行結果
ブックを保存する直前にマクロを自動実行できました。
デスクトップ配下の「sampl_001.xlsm」 を「名前を付けて保存」をすると
・保存がキャンセルされ
・メッセージ『「名前を付けて保存」をキャンセルしました!』が表示
されました。

参考
BeforeSaveイベントの詳細は、公式サイトをご確認ください。