Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#excel插件:打开文件时如何获取_C#_Excel_Events_Add In - Fatal编程技术网

c#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

我的目的是创建并安装Excel加载项,以便在打开Excel文件时对其执行一些检查。我编写了以下代码:

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(只有程序,没有打开工作簿),我可以找到我的已安装并已激活。。。。