【发布时间】:2019-04-04 00:31:11
【问题描述】:
我有一个 VBA Word 宏,它打开一个 Word 文档,然后打开一个 Excel 文件,选择一个单元格引用,最后使用 Msgbox 显示一条消息。打开 Excel 文件后,我无法找到使 Word 可见的代码,以便用户可以查看 Msgbox 消息,而无需使用任务栏从 Excel 切换到 Word。我试过oWord.Visible = True 但VBA 给了我一个错误。
任何提示表示赞赏。
请看下面的代码:
Sub Module_Test()
Dim oExcel As Object
Dim oWord_Doc as object
Dim wb_open as workbook
Set oExcel = New Excel.Application
str_Excel_Filename = "C:\Test\Excel_Template.xlsx"
Documents.Open ("C:\Test\Doc_to_process.docx")
Set oWord_Doc = activedocument
oExcel.Visible = True
oExcel.ScreenUpdating = True
oExcel.Workbooks.Open str_Excel_Filename
Set wb_open = activeworkbook
wb_open.ActiveSheet.range("a6").Select
' At this point Excel is visible. But the Msgbox statement below is not visible except when one switches to Word using the task bar. What statement do I put here to make Word visible?
Msgbox "Here is a message that should be visible when viewing the window containing the Doc_to_process.docx"
End Sub
【问题讨论】:
-
您可以尝试在
wb_open行下方添加oWord_Doc.Activate -
试试
AppActivate "Microsoft Word"或AppActivate Application.Caption -
正如Tim Williams 建议的那样:在'wb_open ...'和'MsgBox ...'行之间插入'AppActivate "Microsoft Word"'行,然后MsgBox将显示,当点击OK时, Word 将处于活动状态(可见),Excel 在后台。
-
我尝试了以上所有三个选项。结果是
oWord_Doc.Activate编译得很好,但不会将活动应用程序切换到 Word(但如果您在 VBA 编辑器中停止该行,它会这样做)。AppActivate "Microsoft Word"和AppActivate Application.Caption都导致 Invalid procedure call or argument 的执行错误。感谢 Brotato 和 @tim-williams 的建议。