2
我有一个DOTM模板很简单的字子:调用带有参数的字VBA子从Excel VBA
Sub YHelloThar(msg As String)
MsgBox (msg)
End Sub
然后我有一个Excel子:
Sub CallWordSub()
Dim wdApp As Word.Application
Dim newDoc As Word.Document
'Word template location
strFile = "C:\Some\Folder\MyWordDoc.dotm"
'Get or create Word application
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then
Set wdApp = CreateObject("Word.Application")
End If
'Create new Word doc from template
Set newDoc= wdApp.Documents.Add(strFile)
'Call the YHelloThar sub from the word doc
Call wdApp.Run(strFile & "!YHelloThar", "Hello")
End If
End Sub
最后一行给出我“运行时错误'438':对象不支持此属性或方法。”
我不知道我在做什么错 - 我查过的所有东西都表明这是从不同的应用程序中调用子接口的正确方法。
此外,如果我将最后一行更改为无参数调用,它突然正常工作。
太棒了。这工作完美。特别感谢关于错误检查和延迟绑定的额外评论。我一直有点避免延迟绑定,因为我对VBA很陌生,想看看有什么属性/方法(当所有东西都只是一个对象时,这显然不能很好地工作),但我可能应该尽快做出改变。 – 2012-03-02 20:38:48
+1打好的例子 – brettdj 2012-03-03 00:28:08