我使用VSTO for Excel 2007並使用IConnectionPointContainer管理Excel應用程序事件,而不是直接訂閱它們。現在在Office 2013之前,我沒有使用VSTO,而是實現了IExtensibility2接口。我用來獲取直接Excel應用程序對象和管理Excel事件是按以下步驟進行:VSTO Excel加載項投擲異常
IConnectionPoint _eventSourceConnectionPoint;
ComObjLifetimeManager _eventSourceConnectionPointLifeManager;
var _eventSource = excelApplication as IConnectionPointContainer;
_eventSource.FindConnectionPoint(ref _xlAppEventsIID, out _eventSourceConnectionPoint);
_eventSourceConnectionPointLifeManager = new ComObjLifetimeManager(_eventSourceConnectionPoint);
_eventSourceConnectionPoint.Advise(this, out _connectionCookie);
過去,這完全正常工作之前。現在我正在使用VSTO,因此調用_eventSource.FindConnectionPoint()方法時出現TargetInvocationException異常。
「接口不支持後期綁定的電話,因爲它沒有從IDispatch接口派生」
所有東西都是相同的,不同的是我現在從獲取Excel應用程序對象「this.Application以前「而不是通過IExtensibility2接口免費獲得。