从Excel调用Word VBA MsgBox函数

从Excel调用Word VBA MsgBox函数,vba,excel,ms-word,Vba,Excel,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

是否可以从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")
但是我得到了错误“对象不支持这个属性或方法”,不管我包括哪个“调用”行

我正在尝试这样做,以便在打开的Word文档前面显示一个消息框,说明文档呈现已完成。如果我只是调用Excel的MsgBox,那么我必须单击Windows任务栏中的闪烁按钮才能看到消息框

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文档完全由我的Excel宏生成


这可能吗?

是的!您这样做的问题是word应用程序的run函数查找具有该名称的宏并运行它们。我能够做到这一点的方法是在word文档中创建一个子例程来创建消息框

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

我有一些导出模块和重新导入模块的功能。它现在是为PPT配置的,但是从我发现的Excel函数中黑客攻击而成的。还有一种使用VBA编写VBA的方法。不过,两者都相当先进。这里可能有两组功能:

然而,这可能是矫枉过正。这可能是您最好的选择,使用弹出窗口而不是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
有关如何控制超时等的更多详细信息,请参见此处


在使Word应用程序可见并处于活动状态之前,您是否尝试过
MsgBox“Hello World”
?谢谢您的建议,不过,我希望Word文档在生成时能够在屏幕上显示。
MsgBox
VBA.Interaction
类上的一种方法-它不是Word/Excel对象库的一部分。非常感谢Telestia。但是,Word文档完全由Excel宏生成。我可以创建一个包含您的“测试”宏的启用宏的空白模板,然后使用该模板生成我的文档,但如果我能够分发Excel电子表格而不必包含word模板,那就太好了。是的,我想在我发布答案后可能会是这样。所以我开始查找Word文档,唉,我找不到任何可以让您导入模块的内容。或者甚至是我觉得更有趣的事情,编写编写代码的代码。有空的时候我会继续找,不过作为一个新问题可能会更好。谢谢Telestia。下面的“弹出式”想法对我很有用,但谢谢你的帮助!您可以使用Excel VBA在Word文档中编写代码,但需要在Excel VB项目中引用Microsoft Visual Basic for Applications扩展性库,并且需要在运行Excel代码的计算机上的Word信任中心中信任对VBE对象模型的访问(出于正当理由,默认情况下不受信任,使用VBA也不受信任)。谢谢David,这比我希望的还要好:无论哪个窗口处于焦点,弹出窗口似乎都会出现。