是否可以从Excel VBA调用Word的MsgBox功能?我这样做很麻烦,因为MsgBox不是Word.Application的方法。
我试过这个:
Dim objWord As Word.Application
Set objWord = New Word.Application
Dim objDoc As Word.Document
Set objDoc = objWord.Documents.Add
objWord.Visible = True
objWord.Activate
Call objWord.Run("MsgBox", "Hello World") ' Or:
Call objDoc.Run("MsgBox", "Hello World")
但是我得到错误“对象不支持此属性或方法”,无论我包含哪个“Call”行。
我正在尝试这样做,以便我可以在打开的Word文档前面显示一个消息框,说明文档呈现已完成。如果我只是调用Excel的MsgBox,那么我必须先单击Windows任务栏中的闪烁按钮才能看到消息框。
word文档完全由我的Excel宏生成。
这可能吗?
答案 0 :(得分:2)
我有一些导出模块并重新导入模块的功能。它现在配置为PPT,但是我发现的Excel功能一起被黑客入侵。还有一种方法可以使用VBA来编写VBA。两者都相当先进。可能这两个功能都可以在这里找到:
http://www.cpearson.com/excel/vbe.aspx
然而,这可能是矫枉过正的。这可能是你最好的选择,使用弹出窗口代替VBA msgBox。
Sub Test()
Dim wdApp As Object
Dim shl As Object
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
wdApp.Activate
Set shl = CreateObject("wscript.shell")
shl.Popup ("Hello, world!")
Set shl = Nothing
Set wdApp = Nothing
End Sub
另请参阅此处了解有关如何控制超时等的更多详细信息。
Whats the best way to display a message box with a timeout value from VBA?
答案 1 :(得分:1)
是的!您执行此操作的方式的问题在于,单词应用程序的运行功能会查找具有该名称的宏并运行它们。我能够实现这一目标的方法是在创建消息框的单词doc中创建一个子例程。
Public Sub Testing()
Dim objWord As Word.Application
Set objWord = New Word.Application
Dim objDoc As Word.Document
Set objDoc = objWord.Documents.Open("C:\whatnot\Stuff.docm")
objWord.Visible = True
objWord.Activate
objWord.Run ("Testing")
End Sub
然后在Word文档中:
Public Sub Testing()
MsgBox ("Hello World")
End Sub