3

我有一个需要调用 Word 2010 VBA 例程并提供字符串参数的 VB6 应用程序。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)“无法运行指定的宏”

作为检查,我有第二个无参数宏(然后调用原始宏),它工作正常。

DocApp.Run "Link.Functions.UpdateFootnoteTest"

我在这里做错了什么?

4

1 回答 1

1

WordActiveDocument在使用Application.Run. 如果函数/过程在第一个文档引用的另一个文档(除了主文档的模板)中,有时需要先激活引用的文档。

即使激活了文档,也不可能用项目名称来限定函数名称。你能做的最好的就是使用模块名称

Link.ThisDocument.Activate
Application.Run "Functions.Foo", "FOO"
于 2016-09-17T05:13:24.307 回答