【发布时间】:2012-05-06 08:46:08
【问题描述】:
我只想在所有工作簿(有或没有宏)中捕获打开和保存事件。 据我了解,我需要带有启用 Event 的代码的 AddIn。我在互联网上找到了很多例子。我学习了 stackoverflow 的例子,比如这里:How can an Excel Add-In respond to events in any worksheet? 但它只是不起作用。没有人报告任何问题。所以,我想我在这里犯了一个简单的错误。 我有下一个插件,例如:
类模块 (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 本身中的类。
标签: excel excel-addins vba