2014-09-26 117 views
3

我已经在我已经把启动目录在Word传递参数与Application.Run VBA

Public Sub SayHi1() 
    MsgBox "Hi......." 
End Sub 

Public Sub SayHi2(ByVal n As String) 
    MsgBox "Hi " & n 
End Sub 

然后从一个新的文档我的Word加载项(.dotm)定义的两个分我能调用第一子没有参数如下:

Sub AppRun_AddIn_NoArg() 
    Application.Run "MyProject.Module1.SayHi1" 
End Sub 

但是当我尝试运行带有参数的第二次我得到错误说“对象不支持此属性或方法”

Sub AppRun_AddIn_WithArg() 
    Application.Run "MyProject.Module1.SayHi2", "Tejas" 
End Sub 

错误消息: enter image description here

+3

由于某种原因,如果您删除了“MyProject”位,它会起作用 - 但很明显,您最终可能会调用错误的宏。显然这与[“如果指定文档名称,您的代码只能在与当前上下文相关的文档中运行宏 - 而不是任何文档中的任何宏”)(http://msdn.microsoft.com/ EN-US /图书馆/办公室/ ff838935.aspx)。 – GSerg 2014-09-26 16:29:31

+0

你有没有使用Call的原因? – 2014-09-26 16:47:43

+0

@GSerg是的,没有项目名称和模块名称它的工作。 – Tejas 2014-09-26 21:35:08

回答

2

这似乎是长期使用Word的问题。

由于KB190235 suggests

原因:
您已经包括模板名作为Macroname参数字符串的一部分。

分辨率:
从Macroname参数中删除模板名称。

解决方法:
为了避免引用的项目中命名冲突,给你的程序唯一的名称,以便您可以调用一个过程而不指定项目或模块。

+0

它的工作。谢谢! – Tejas 2014-09-26 21:34:28