Не удается вызвать Word VBA Macro с параметрами - PullRequest
2 голосов
/ 05 ноября 2011

У меня есть приложение VB6, которому нужно вызвать подпрограмму Word 2010 VBA и указать строковый параметр.Подпрограмма VBA находится в надстройке, которая включена с открытым документом.

Согласно справочнику MSDN (http://msdn.microsoft.com/en-us/library/ff838935.aspx) Я должен иметь возможность указывать этот параметр после имени макроса в порядке.

Мой код, вызывающий подпрограмму, выглядит так:

sMacro = "Link.Functions.UpdateFootnote"
sParam = "Footnote Text"
DocApp.Run sMacro, sParam

'I've also tried
DocApp.Run MacroName:=sMacro, varg1:=sParam
'and
DocApp.Run "Link.Functions.UpdateFootnote","Footnote Text"

В каждом случае это приводит к ошибке 438 во время выполнения: «Объект не поддерживает это свойство или метод».

DocApp.Run "Link.Functions.UpdateFootnote, Footnote text"

Это дает ошибку времени выполнения -2147352573 (80020003) «Невозможно запустить указанный макрос»

В качестве проверки у меня есть 2-й макрос без параметров (который затем вызывает исходный макрос), и он работает нормально.

DocApp.Run "Link.Functions.UpdateFootnoteTest"

Что я тут не так делаю?

1 Ответ

0 голосов
/ 17 сентября 2016

Слово суетливо о ActiveDocument, когда дело доходит до использования Application.Run.Если функция / процедура находится в другом документе (кроме шаблона основного документа), на который ссылается первый документ, иногда необходимо сначала активировать ссылочный документ.

Даже при активированном документе этоневозможно сопоставить имя функции с именем проекта.Лучшее, что вы можете сделать, это использовать имя модуля

Link.ThisDocument.Activate
Application.Run "Functions.Foo", "FOO"
...