c#excel插件:打开文件时如何获取
我的目的是创建并安装Excel加载项,以便在打开Excel文件时对其执行一些检查。我编写了以下代码:c#excel插件:打开文件时如何获取,c#,excel,events,add-in,C#,Excel,Events,Add In,我的目的是创建并安装Excel加载项,以便在打开Excel文件时对其执行一些检查。我编写了以下代码: private void InternalStartup() { this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpenHandle); this.Startup += new System.EventHandler(ThisAddIn_Start
private void InternalStartup()
{
this.Application.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(Application_WorkbookOpenHandle);
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
void Application_WorkbookOpenHandle(Excel.Workbook Wb)
{
System.Windows.Forms.MessageBox.Show("WORKBOOK OPENED");
// perform checks and then exit
}
我已成功发布并安装了加载项
然而:
如果直接打开Excel文件,我可以看到消息
如果我打开Excel,然后打开一个文件,我可以看到消息
如果只打开Excel,则无法看到该消息
如果打开Excel并单击“新建”,则无法看到该消息
如果从命令Excel.exe c:\temp\book1.xls打开文件,则无法看到该消息
我需要在所有这些情况下显示消息。
我能处理什么事件
另外,我知道我可以尝试使用Windows服务来实现我的目标,但我必须严格使用Excel加载项。Excel打开工作簿(实际上是文件)时会触发WorkbookOpen事件。您可以在启动事件中使用消息框代码来检测Excel启动(实际上是插件启动)。启动事件是什么?我找不到它。此外,如果加载项是在Excel启动后加载的,我如何处理加载前引发的事件?次要说明:您确定这不是工作簿加载项而是应用程序加载项吗?如果您在
ThisAddIn.cs
中使用private void ThisAddIn\u Startup(object sender,System.EventArgs e)
,您的应用程序外接程序应与Excel应用程序一起加载,这是您处理启动的地方。启动事件是您在代码示例中使用的事件:this.Startup+=…Ok,如果我在“ThisAddIn_Startup”中放置一个消息框,我几乎可以在所有情况下看到该消息,但打开Excel并单击“新建”以获取新的空白文件时除外。因此,我的外接程序似乎与工作簿相关,而与应用程序无关。但是如果我在外接程序列表中打开Excel(只有程序,没有打开工作簿),我可以找到我的已安装并已激活。。。。