我在这个问题上被困了几个小时:
我正在用 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);
感谢您的帮助!
阿卡西奥
这件事让我发疯,但我找到了如何让它发挥作用!这是我所做的(使用这个http://support.microsoft.com/kb/306682 :
因此,正如我在问题中所解释的,我首先以编程方式注册并加载加载项,然后执行以下操作:
private void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}
Globals.ThisAddIn.RunMacro(Globals.ThisAddIn.Application , new object[] {"PPspliT_main"});
感谢大家的帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)