我们有一个用于 Excel 的 VSTO 应用程序插件(不是文档插件),我们想向 VBA 代码公开一个事件,以便 VBA 宏可以在插件中触发此事件时执行一些操作。如何获取 VBA 代码以订阅 VSTO 应用程序插件中定义的事件?
我想既然插件是在Excel进程中加载的,这应该不会太棘手,但还没有找到办法。
顺便说一句,使用 VS 2008 和 Excel 2007。
谢谢!
最佳答案
VSTO 不是一般可以从其他DLL 调用的DLL。 VSTO 基本上是在单独的 AppDomain 中运行的包装器中运行的 COM 公开 .NET 代码。虽然 VSTO 加载项在技术上是一个正在加载到 Excel 中的 DLL,但它的运行更像是一个顶级 EXE,而不是作为向其他调用方公开的 DLL 库。
就个人而言,我会创建一个标准的 .NET 程序集——也就是说,避免为此使用 VSTO——并使用正确的属性将其公开给 COM。该过程在这里得到了很好的解释:COM Interop Exposed - Part 2 ,在标题为“向 COM 公开 .NET 事件”的部分下。
如果您真的坚持让 VBA 能够调用 VSTO,那么您将不得不通过 Office.COMAddIn.Object
属性进行操作,该属性通过覆盖 RequestComAddInAutomationService< 启用
方法。文章 VSTO Add-ins, COMAddIns and RequestComAddInAutomationService 中详细讨论了该过程作者:安德鲁·怀特查佩尔。
希望对您有所帮助!
迈克
关于c# - 从 VBA (Excel) 访问 VSTO 应用程序插件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474205/