c# – 启动时不会发生Excel VSTO NewWorkbook事件

我正在开发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是否已在运行.

最佳答案 如何在加载项加载时打开的所有工作簿上执行操作?

在ThisAddIn_Startup处理程序中有如下内容? (这里没有IDE,所以手写):

foreach (var workbook in Globals.ThisAddIn.Application.Workbooks)
{
  // Do your thing
}

然后使用事件处理来捕获随后打开的任何工作簿.

点赞