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

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

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

任何帮助将不胜感激。

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