VSTO Excel加载项抛出异常

时间:2014-04-17 06:57:49

标签: excel com vsto excel-addins

我正在使用VSTO for Excel 2007并使用IConnectionPointContainer管理excel应用程序事件,而不是直接订阅它们。现在在Office 2013之前,我没有使用VSTO但是实现了IExtensibility2接口。我曾经直接获得excel应用程序对象,并按如下方式管理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 "

除了我现在从" this.Application"中获取excel应用程序对象之外,所有的事情都与之前的相同。而不是通过IExtensibility2界面免费获取它。

1 个答案:

答案 0 :(得分:0)

即使经过大量的研究,我也没有到达任何地方,然后我意外地降落在这里:http://blogs.msdn.com/b/vsod/archive/2010/04/07/how-to-implement-late-bound-event-handling-in-case-of-a-vsto-add-in.aspx
这解决了我的问题。对于其他有相同问题的人,您基本上需要在assemblyinfo.cs中执行以下操作:

1. Set ExcelLocale1033 attribute to false
2. Mark the assembly as COM Visible