VBA插件:事件不起作用

我只想在所有工作簿中捕获打开和保存事件(有或没有macros)。 据我所知,我需要添加事件启用代码。 我在互联网上find很多例子。 我学到了stackoverflow的例子,如下所示: Excel加载项如何响应任何工作表中的事件? 但它不起作用。 没有人报告任何问题。 所以,我觉得我这里有个简单的错误。 我有下一个Addin,例如:

类模块(ExcelEventCapture) – private:

Option Explicit Public WithEvents ExcelApp As Excel.Application Private Sub Class_Initialize() Set ExcelApp = New Excel.Application ExcelApp.EnableEvents = True MsgBox "ExcelApp OK" End Sub Private Sub ExcelApp_NewWorkbook(ByVal Wb As Workbook) Wb.Close savechanges:=False MsgBox "Sorry - you can't create workbooks in this system!" End Sub 

此代码放置在ThisWorkbook中:

 Option Explicit Private ExcelEvents As ExcelEventCapture Private Sub Workbook_Open() Set ExcelEvents = New ExcelEventCapture MsgBox "ExcelEvents OK" End Sub 

每次保存/修改此代码后,我都使用加载项pipe理器来closures/打开这个插件。 打开后,我看到“ExcelApp OK”,“ExcelEvents OK”。 但是当我创build新的工作簿时,没有事件发生。 其他事件也没有处理。 我使用2007/2010 Excel进行试用。 结果一样。 请帮忙。

你的代码不太正确:

类模块(ExcelEventCapture)

 Option Explicit Public WithEvents ExcelApp As Application Private Sub ExcelApp_NewWorkbook(ByVal Wb As Workbook) Wb.Close savechanges:=False MsgBox "Sorry - you can't create workbooks in this system!" End Sub 

此代码放置在ThisWorkbook中:

 Option Explicit Private ExcelEvents As New ExcelEventCapture Private Sub Workbook_Open() Set ExcelEvents.ExcelApp = Application MsgBox "ExcelEvents OK" End Sub