Excel插件的OnConnection工作簿加载

问题描述:

之前,没有人知道为什么获取调用,当我打开一个工作簿(双击一个已经创建的.xls文件)我的OnConnection被调用我的外接工作簿之前被加载。这会导致我的((Microsoft.Office.Interop.Excel.Application)application).ActiveWorkbook为空。Excel插件的OnConnection工作簿加载

如果我只是打开Excel从Excel的快捷方式,它会加载Book1.xls的(默认书)和我的ActiveWorkbook将被实例化。

为什么会这样,我可以做让我ActiveWorkbook我的OnConnection之前加载什么,当我从文件中加载被调用。

我用Excel 2003 SP3

这是因为加载项是加载工作簿之前加载,这是在OnConnection火灾时。这是设计。另外,它只会触发一次,所以如果有人使用文件 - >打开打开另一个工作簿,则OnConnection不会再次触发。把OnConnection想象成一个做任何初始化的地方,比如接入一个事件。

相反,你应该处理WorkbookOpen事件做你的逻辑,并将其连接在上的OnConnection。

例如:

public void OnConnection(object application, object connectMode, object addInInst, ref Array custom) 
{ 
    var excelApplication = ((Microsoft.Office.Interop.Excel.Application) application); 
    //Start listening to the WorkbookOpen event 
    excelApplication.WorkbookOpen += WorkbookOpen; 
} 

private void WorkbookOpen(Workbook wb) 
{ 
    //A workbook was opened. Do your logic here. 
}