Excel VBA:如何创build一个全局事件Global_beforsave()

我需要检测每个文件(* .xls,* .xlsx,* .xlsb,…)在保存之前在excel中打开许多属性。

在* .xlsm文件中,我在此工作簿中包含Workbook_BeforeSave(),但仅适用于此工作簿。

我希望在* .xlam文件中包含全局事件,但是我不知道该怎么做。

正如Charles链接所示,您必须使用一个类模块来捕获来自其他对象的事件。

我的build议是重用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 

请参阅Chip Pearson在“应用程序事件”的书面文章