操作方法:从C#Ribbon Addin运行现有的Word VBA宏

时间:2009-11-14 22:26:26

标签: c# vba vsto word-vba

背景:我在Word中使用了一组广泛的专用VBA宏来进行文档格式化。在Word 2003中,这些宏是从自定义工具栏激活的。我最近转换到Word 2007,并希望能够从使用VS 2010创建的新Word功能区运行这些现有的VBA宏。我创建了一个功能区;但是,我无法弄清楚如何从新的功能区按钮调用现有的宏。

问题:如何从C#Word加载项调用存储在.dotm模板中的现有VBA宏?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

MS KB article 306683中描述的技术 - 特别是在那里定义的函数RunMacro应允许您从C#代码中调用VBA宏:定义函数RunMacro < / p>

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加载项的某个位置使用。