我只想在所有工作簿中捕獲打開和保存事件(帶有或不帶有宏)。 據我所知我需要添加事件啓用代碼。我在互聯網上發現了很多例子。我學到了stackoverflow的例子,像這裏:How can an Excel Add-In respond to events in any worksheet? 但它只是不起作用。沒有人報告任何問題。所以,我認爲我在這裏有一個簡單的錯誤。 我有下一個加載項,例如:VBA插件:事件不起作用
類模塊(ExcelEventCapture) - 私人:
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
每次之後保存/修改此代碼我使用加載項管理器來關閉/打開此插件。打開後,我看到「ExcelApp OK」,「ExcelEvents OK」。但是當我創建新的工作簿時,不會發生事件。其他事件也沒有處理。我用2007/2010 Excel試用它。結果相同。 請幫忙。
我不能完全肯定,但你爲什麼要實例化一個「新Excel應用程序」而不是'Set ExcelApp = Excel.Application'。另外,你可以在Auto_Open()中實例化AddIn本身的類。 – ExternalUse