【发布时间】:2013-08-06 15:12:12
【问题描述】:
我正在开发一个 Excel 2010 应用程序级插件。我需要为一些与 Workbook 接口相关的 Application 事件编写处理程序,尤其是 NewWorkbook 事件。
所以在 ThisAddIn_Startup 处理程序中,我添加了如下代码:
Microsoft.Office.Interop.Excel.AppEvents_Event app = Globals.ThisAddIn.Application;
app.NewWorkbook += MyApp_NewWorkbook;
在正在运行的 Excel 实例中创建新工作簿时,它可以正常工作。但是当我运行新的 Excel 实例(在标准情况下,这意味着创建新的工作簿)时,我的处理程序不会捕获此事件。我想当我运行新的 Excel 实例时,NewWorkbook 事件发生在 ThisAddIn_Startup 事件之前。
如果 WorkbookOpen 事件应用程序的行为与我预期的一样 - 当我在正在运行的 Excel 实例中打开现有工作簿以及双击文件时捕获事件。我想知道为什么这些事件的处理方式不同?
在这种情况下我该怎么办?无论 Excel 是否已在运行,我都需要识别是否创建了新工作簿或打开了现有工作簿。
【问题讨论】:
-
我认为空的工作簿模板不算作“打开工作簿”。您必须注册一些应用启动事件来处理这种情况。