如何:从C# Ribbon插件运行现有的Word VBA宏

5
背景:我有一套专门用于Word文档格式化的VBA宏。在Word 2003中,这些宏是从自定义工具栏中激活的。我最近转换到了Word 2007,并希望能够从使用VS 2010创建的新Word Ribbon中运行这些现有的VBA宏。我已经创建了一个Ribbon,但是我不知道如何从新的Ribbon按钮中调用现有的宏。
问题:我如何从C# Word Add-in中调用存储在.dotm模板中的现有VBA宏?
任何帮助将不胜感激。
1个回答

7

MS KB article 306683中描述的技术,特别是其中定义的函数RunMacro,应该可以让您从C#代码中调用VBA宏:您需要定义一个RunMacro函数。

private void RunMacro(object oApp, object[] oRunArgs)
{
    oApp.GetType().InvokeMember("Run",
        System.Reflection.BindingFlags.Default |
        System.Reflection.BindingFlags.InvokeMethod,
        null, oApp, oRunArgs);
}

然后像这样调用您的宏:
RunMacro(oApp, new object[] {"NameOfMyMacro"})

或者

RunMacro(oApp, new object[] {"NameOfMyMacro", "some", 3, "parameters"})

oAppWord.Application对象,我相信它在Word插件中的某个地方可用。


如果我在Excel模板中使用此代码,它会生成宏安全警告...我该如何抑制它? - Smack
@Smack:http://office.microsoft.com/zh-cn/excel-help/HP010096919.aspx 在Excel中更改宏安全设置。 - Heinzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接