我已经遇到了这个问题的几个小时:呼叫VBA加载宏宏
我开发一个PowerPoint外接程序在C#中,我想使用来自另一个外接程序宏这是一个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
模块。
我觉得奇怪的另一件事是,即使宏没有任何参数,运行需要两个参数(这就是为什么我把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);
感谢您的帮助! Acacio
“我发现奇怪的另一件事是,即使宏没有任何参数,Run也需要两个参数(这就是为什么我把null作为第二个参数的原因)。”运行并不需要它;它可能是一种特殊的方式。.NET接口与VB.NET需要的COM/VBA填充所有参数,可选或不可选。 – 2012-02-14 02:19:14
您是否在application.Run中看到任何错误? – 2012-02-14 04:57:25
不,没有错误,但没有任何反应。我试图直接调用例程:Globals.ThisAddIn.Application.Run(“PPspliT_main”,null);但仍然没有。事实上,如果你知道在我的C#项目中使用这个VBA代码的另一种方法,那么可以,因为我有PPspliT加载项的代码,它也是pptm文件。 – 2012-02-14 09:00:19