从VBA访问VSTO应用程序插件types(Excel)

我们有一个用于Excel的VSTO应用程序插件(不是文档插件),我们希望将事件暴露给VBA代码,以便VBAmacros可以在插件中引发此事件时执行一些操作。 我怎样才能得到的VBA代码能够订阅在VSTO应用程序插件中定义的事件?

我认为,因为在Excel过程中加载插件,这不应该太棘手,但还没有find一种方式。

顺便说一下,使用VS 2008和Excel 2007。

谢谢!

VSTO不是一般可以从其他DLL调用的DLL。 VSTO基本上是从一个单独的AppDomain中运行的包装器中运行的COM公开的.NET代码。 虽然你的VSTO加载项在技术上是一个正在加载到Excel中的DLL,但它更像是一个顶级EXE,而不是一个暴露给其他调用者的DLL库。

就个人而言,我会创build一个标准的.NET程序集,也就是避免使用VSTO,并使用正确的属性将其暴露给COM。 在这里很好地解释了这个过程: COM Interop Exposed – 第2部分,标题为“将.NET事件公开给COM”一节。

如果你真的坚持让VBA能够调用VSTO,那么你必须通过重写Office.COMAddIn.Object方法来启用Office.COMAddIn.Object属性。 这个过程在Andrew Whitechapel的文章VSTO Add-ins,COMAddIns和RequestComAddInAutomationService中详细讨论。

我希望这有帮助!

麦克风