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.
}