【发布时间】:2014-11-21 17:25:36
【问题描述】:
我在我的 Word Addin (.dotm) 中定义了以下两个 Sub,我将它们放在 StartUp 目录中
Public Sub SayHi1()
MsgBox "Hi......."
End Sub
Public Sub SayHi2(ByVal n As String)
MsgBox "Hi " & n
End Sub
然后,我可以从一个新文档中调用 1st Sub 而无需如下参数:
Sub AppRun_AddIn_NoArg()
Application.Run "MyProject.Module1.SayHi1"
End Sub
但是当我尝试使用参数运行第二个 Sub 时,我收到错误消息“对象不支持此属性或方法”
Sub AppRun_AddIn_WithArg()
Application.Run "MyProject.Module1.SayHi2", "Tejas"
End Sub
错误信息:
【问题讨论】:
-
由于某种原因,如果您删除
MyProject位,它会起作用 - 但显然您最终可能会调用错误的宏。显然这与"If you specify the document name, your code can only run macros in documents related to the current context — not just any macro in any document"有关。 -
您不使用 Call 有什么原因吗?
-
@GSerg 是的,没有项目名称和模块名称它可以工作。
-
@jbarker2160:没有具体原因。使用 Call 有什么好处吗?
-
@Tejas 有——你可以使用完全限定的名称来调用它,你会得到智能感知。而且工作起来会稍微快一些。
.Run在编译时不知道宏名时使用,如果在编译时知道,直接调用即可。