2011-11-18 82 views
0

之前,沒有人知道爲什麼獲取調用,當我打開一個工作簿(雙擊一個已經創建的.xls文件)我的OnConnection被調用我的外接工作簿之前被加載。這會導致我的((Microsoft.Office.Interop.Excel.Application)application).ActiveWorkbook爲空。Excel插件的OnConnection工作簿加載

如果我只是打開Excel從Excel的快捷方式,它會加載Book1.xls的(默認書)和我的ActiveWorkbook將被實例化。

爲什麼會這樣,我可以做讓我ActiveWorkbook我的OnConnection之前加載什麼,當我從文件中加載被調用。

我用Excel 2003 SP3

回答

0

這是因爲加載項是加載工作簿之前加載,這是在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. 
}