保存する前に、Excel で開いている各ファイル (*.xls、*.xlsx、*.xlsb、...) を検出する必要があります。
*.xlsm ファイルに Workbook_BeforeSave() を thisWorkbook に含めますが、thisWorkbook でのみ使用できます。
*.xlam ファイルにグローバル イベントを含めたいのですが、その方法がわかりません。
Charles リンクが示すように、クラス モジュールを使用して、他のオブジェクトからのイベントをキャッチする必要があります。
私の提案は、ThisWorkbook
オブジェクトを再利用することです:
'App variable which should be assigned to current Application instance:
Public WithEvents App As Excel.Application
'Use open event on your workbook to assign App
Private Sub Workbook_Open()
Set App = Application
End Sub
'Code catching WorkbookBeforeSave event on App
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
Debug.Print "Workbook "; Wb.Name; " is about to be saved..."
End Sub