gpt4 book ai didi

c# - 从 VBA (Excel) 访问 VSTO 应用程序插件类型

转载 作者:可可西里 更新时间:2023-11-01 07:57:18 32 4
gpt4 key购买 nike

我们有一个用于 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com