Практическое руководство. Запуск существующих макросов Word VBA из надстройки ленты C # - PullRequest
4 голосов
/ 15 ноября 2009

Справочная информация. У меня есть обширный набор специализированных макросов VBA, используемых в Word для форматирования документов. В Word 2003 эти макросы были активированы с настраиваемой панели инструментов. Я недавно перешел на Word 2007 и хотел бы иметь возможность запускать эти существующие макросы VBA из новой ленты Word, созданной с VS 2010. Я создал ленту; однако я не могу понять, как вызывать существующие макросы из новых кнопок ленты.

Вопрос: Как мне вызвать существующие макросы VBA, которые хранятся в шаблоне .dotm, из надстройки C # Word?

Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 15 ноября 2009

Методика, описанная в MS KB, статья 306683 - в частности, определенная там функция RunMacro - должна позволять вам вызывать макрос VBA из кода C #: вы определяете функцию 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"})

oApp - это объект Word.Application, который, я уверен, доступен где-то в надстройке Word.

...