【发布时间】:2015-10-14 23:38:39
【问题描述】:
我在这个问题上被困了几个小时:
我正在用 C# 开发一个 PowerPoint 插件,我想使用另一个插件中的宏,它是一个 PPAM 文件。 PPAM 文件已安装并启用。
在应用程序参考中,我发现我需要使用 Application.Run 方法,但我无法让它工作(什么都没有发生)...这是我的代码:
Globals.ThisAddIn.Application.Run("PPspliT.ppam!PPspliT.PPspliT_main", null);
PPspliT.ppam 是已安装的插件(位于此处:C:\Users\XXXX\AppData\Roaming\Microsoft\AddIns\PPspliT\)
调用PPspliT_main宏的模块名为PPspliT。
我觉得奇怪的另一件事是 Run 需要接受两个参数,即使宏没有任何参数(这就是我将 null 作为第二个参数的原因)。
我还尝试使用以下方式以编程方式安装插件:
String addinPath = @"C:\Users\XXXXX\AppData\Roaming\Microsoft\AddIns\PPspliT";
var macroFilePath = Path.Combine(addinPath, "PPspliT.ppam");
var addins = Globals.ThisAddIn.Application.AddIns.Add(macroFilePath);
if (!(addins.Registered == MsoTriState.msoTrue && addins.Loaded == MsoTriState.msoTrue))
{
addins.Registered = MsoTriState.msoTrue;
addins.Loaded = MsoTriState.msoTrue;
}
var app = Globals.ThisAddIn.Application;
string macroToInvoke = string.Format("{0}!{1}", "PPspliT.ppam", "PPspliT.PPspliT_main");
Globals.ThisAddIn.Application.Run(macroToInvoke, null);
感谢您的帮助! 相思
【问题讨论】:
-
“我觉得奇怪的另一件事是 Run 需要两个参数,即使宏没有任何参数(这就是我将 null 作为第二个参数的原因)。”运行不需要它;这可能是 .NET 与 COM/VBA 接口的一种特殊方式,VB.NET 要求您填写所有参数,无论是否可选。
-
您在 application.Run 中看到任何错误吗?
-
不,根本没有错误,但什么也没发生。我试图直接调用例程: Globals.ThisAddIn.Application.Run("PPspliT_main", null);但仍然没有。实际上,如果您知道在我的 C# 项目中使用此 VBA 代码的另一种方法,那就没问题了,因为我有 PPspliT 插件的代码,它也是 pptm 文件。
标签: vba vsto powerpoint add-in