當Excel工作表或圖表嵌入到Word或Powerpoint中時,這是一個非常常見的問題。我在Word和Powerpoint中都看到了這個問題,看起來就是連接到Excel的COM插件。 COM插件是用C#(.NET)編寫的。查看附件中的錯誤對話框。將Excel圖表對象嵌入到PowerPoint中時,PowerPoint將顯示「無法啓動應用程序」錯誤
我調試了插件,發現了一個非常奇怪的行爲。 COM插件中的OnConnection(...),OnDisConnection(...)等方法正常工作,直到向代碼添加事件處理程序。即處理Worksheet_SheetChange,SelectionChange或Excel中可用的任何類似事件。只要我添加一個單獨的事件處理程序(儘管我的代碼有幾個),Word和Powerpoint開始抱怨並且不激活嵌入對象。
在互聯網上的一些帖子上,人們被要求刪除辦公室的反病毒插件(在我的情況下是無的),所以這讓我相信這個問題與COM加載項有些相關,主機應用程序激活對象。
有沒有人知道這裏發生了什麼? PowerPoint Error http://www.freeimagehosting.net/uploads/d687736c66.png
Word Error http://www.freeimagehosting.net/uploads/f72b99bc25.png
修訂版6月21日 - 2010
發現,當嵌入對象被激活的事件和變化ComAddIns收集產生問題。我現在使用Excel :: Application :: UserControl屬性來檢查Excel是否處於嵌入狀態,然後跳過任何OnConnection(...)和OnDisconnection(...)代碼。
事件問題的一個解決方案可能是將所有應用程序級別的事件移動到VBA代碼並調用.NET。從而從.NET代碼中刪除所有事件處理程序。
可能有更多的情況下嵌入對象可能無法初始化,所以我選擇禁用COM插件,即完全跳過OnConnection(...)和OnDisconnection(...)方法中的代碼。