【发布时间】:2020-05-20 20:42:48
【问题描述】:
我正在开发一个项目,其中有一个 Visual Studio C# Excel 插件项目 (VSTO)。从 VSTO 代码中,我将带有按钮的功能区添加到 Excel (Office.IRibbonExtensibility)。 通过 Excel 中添加的按钮,我可以对 C# 代码(在 VSTO 插件中)中的方法进行回调调用。 我正在寻找(而不是寻找)从该按钮调用 VBA(函数的子)到 Excel 文件中的 VBA 代码的方法。 换句话说,通过该按钮,我知道如何调用 C# 中的代码,但不知道如何调用 Excel 文件本身中的 VBA 代码。 我花了相当长的时间搜索信息并测试一些盲目的想法,但没有成功找到任何东西或从我的测试中获得一些好的结果。 我希望能朝着正确的方向迈出第一步。
不确定这是否是稍后(2/10/20 @17:08 GMT -7)添加此注释的正确位置和方法(在获得以下答案后)。我创建了一个小型演示项目并将其上传到 github。项目中也有一个视频(mp4)文件来展示它是如何工作的。 https://github.com/MNemteanu/ExcelVSTOAddInDemo
【问题讨论】:
-
你不能调用C#然后调用VBA?也许你可以多解释一下你的用例。
-
我想过这个问题,但不知道它是否会起作用以及如何起作用。那将是一个 B 计划。这将是一种解决方法(字面意思),因为按钮和 VBA 都在 Excel 文件中,并且直接从按钮调用 VBA 而不是去按钮 -> C# - 更有意义> VBA。我只是希望(仍然)找到一个直接呼叫解决方案。如果可以解释用例,它会变得很麻烦,但如果提出任何具体问题,我很乐意添加说明。
-
感谢蒂姆的链接,我看到并尝试了,但不起作用。如果我不得不依赖这个 12 年前的信息(我猜没有人负责清理 Internet),我应该开始制定计划 B。这家伙说回调必须是 COM 插件不是 VBA:social.msdn.microsoft.com/Forums/vstudio/en-US/…
-
目的是在卸载 VSTO 加载项后添加功能区并使其持续存在(并能够触发宏)吗?顺便说一句,12 年在 excel 领域并不长……