Excel AddIn中的VBA应用程序事件

我正在做一个Excel 2010的AddIn,并试图将一些代码添加到应用程序事件Application_WorkbookActivate(ByVal Wb As Workbook)

但是,AddIn中的模块不能有这些事件。 我试着用这个事件创build一个ClassModule,然后在AddIn的负载上初始化它。 读完这个后,我明白了这个想法。

这里是我在AddIn的类“EventListener:”

 Dim WithEvents app As Application Private Sub app_WorkbookActivate(ByVal Wb As Workbook) Debug.Print "Workbook Activated:"; Wb.Name Call MyAddInModule.RefreshVisibility End Sub 

这里是我的模块“MyAddInModule:”

 Public Listener As EventListener Public myRibbonUI As IRibbonUI ' Ribbon callback : runs when ribbon is loaded Public Sub onLoadRibbon(ribbon As IRibbonUI) ' Get a reference to the ribbon Set myRibbonUI = ribbon Debug.Print "Ribbon Reference Set" Set Listener = New EventListener End Sub Public Sub RefreshVisibility() myRibbonUI.Invalidate Debug.Print "Ribbon Invalidated" End Sub 

不幸的是,这并没有奏效。 在正常的编码模块中声明一个WithEvents对象是不可能的,并且Class对象没有按预期的那样被触发。

有没有更好的方法来将应用程序事件编码到AddIn中?