从Excel调用Word VBA MsgBox函数

时间:2014-05-06 14:36:42

标签: excel vba excel-vba ms-word

是否可以从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宏生成。

这可能吗?

2 个答案:

答案 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
相关问题