代码之家  ›  专栏  ›  技术社区  ›  Alban

Excel VBA:如何使全局事件global_befosave()[关闭]

  •  0
  • Alban  · 技术社区  · 11 年前

    保存之前,我需要检测在excel中打开的每个文件(*.xls、*.xlsx、*.xlesb…)的许多财产。

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

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

    2 回复  |  直到 11 年前
        1
  •  2
  •   LS_ᴅᴇᴠ   11 年前

    正如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
    
        2
  •  1
  •   Community Egal    6 年前

    请参阅Chip Pearson关于应用程序事件的文章 here