背景:我在Word中使用了一组广泛的专用VBA宏来进行文档格式化。在Word 2003中,这些宏是从自定义工具栏激活的。我最近转换到Word 2007,并希望能够从使用VS 2010创建的新Word功能区运行这些现有的VBA宏。我创建了一个功能区;但是,我无法弄清楚如何从新的功能区按钮调用现有的宏。
问题:如何从C#Word加载项调用存储在.dotm模板中的现有VBA宏?
非常感谢任何帮助。
答案 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"})
oApp
是Word.Application
对象,我确信它可以在Word加载项的某个位置使用。