【问题标题】:How-to: Run existing Word VBA Macros from C# Ribbon Addin操作方法:从 C# 功能区插件运行现有 Word VBA 宏
【发布时间】:2010-12-16 16:31:04
【问题描述】:

背景:我有一套广泛的专用 VBA 宏,用于 Word 中用于文档格式化。在 Word 2003 中,这些宏是从自定义工具栏激活的。我最近过渡到 Word 2007,希望能够从使用 VS 2010 创建的新 Word 功能区运行这些现有的 VBA 宏。我创建了一个功能区;但是,我不知道如何从新的功能区按钮调用现有的宏。

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

任何帮助将不胜感激。

【问题讨论】:

    标签: c# vba vsto ms-word


    【解决方案1】:

    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 加载项中的某处可用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多