VBA.激活“不使用excel中的word文档”
我正在编写一个excel工作簿,其中包含许多用户表单,并附带一个用户指南。在用户表单上,我想包括一个“帮助”按钮,单击该按钮可打开用户指南,指向按下按钮的用户表单的相关部分。我已经编写了代码,它基本上是有效的,但是一旦按下按钮,我就无法使word文档始终成为活动窗口。我有以下代码:VBA.激活“不使用excel中的word文档”,excel,vba,ms-word,Excel,Vba,Ms Word,我正在编写一个excel工作簿,其中包含许多用户表单,并附带一个用户指南。在用户表单上,我想包括一个“帮助”按钮,单击该按钮可打开用户指南,指向按下按钮的用户表单的相关部分。我已经编写了代码,它基本上是有效的,但是一旦按下按钮,我就无法使word文档始终成为活动窗口。我有以下代码: Dim path As String Dim userGuide As Word.Document Dim wordApp As Word.Application path = Application.Active
Dim path As String
Dim userGuide As Word.Document
Dim wordApp As Word.Application
path = Application.ActiveWorkbook.path & "\User Guide.doc"
If Len(Dir(path)) > 0 Then
'Set userGuide to be already opened User Guide
On Error Resume Next
Set wordApp = GetObject(, "Word.Application")
Set userGuide = wordApp.Documents("User Guide.doc")
On Error GoTo 0
'If userGuide is nothing, then User Guide is not already open
If userGuide Is Nothing Then
'Open User Guide
Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
Set userGuide = wordApp.Documents.Open(Application.ActiveWorkbook.path & "\User Guide.doc")
End If
wordApp.Activate
Else
MsgBox "User Guide could not be found."
End If
word文档始终正确打开,但wordApp.Activate
行仅间歇工作。一旦我打开了保存此代码的VB模块,它似乎工作得很好,但在我打开之前,word文档将在后台打开,用户必须手动切换窗口。这让我觉得这更多的是一个excel的“特性”,而不是我代码中的一个bug,所以我想知道是否有人有任何建议可以绕过它。我尝试在wordApp.Activate
之前和之后添加DoEvents
,但没有效果
需要注意的一点是,我的excel文件是一个.xls文件(如excel 97-2003工作簿中的文件)。将其另存为.xlsm会导致另一个excel“功能”弹出,而更改扩展名是我找到的快速修复方法。我在下面发布的代码(现已删除)经过了尝试和测试。这对我有用。当你运行代码时,到底发生了什么?和我上面的代码一样。它在后台打开word文档,但没有激活word应用程序,因此用户必须手动从excel切换到word。这对我来说只是一个间歇性的问题,一旦我打开了存储代码的模块,它就会工作,但是当共享最终版本时,VBA将受到密码保护,因此最终用户不会选择。这种情况会发生。我不确定是否有人能弄清楚为什么。。。您可能需要使用Windows API来获得更可靠的结果。我在下面发布的代码(现已删除)经过了尝试和测试。这对我有用。当你运行代码时,到底发生了什么?和我上面的代码一样。它在后台打开word文档,但没有激活word应用程序,因此用户必须手动从excel切换到word。这对我来说只是一个间歇性的问题,一旦我打开了存储代码的模块,它就会工作,但是当共享最终版本时,VBA将受到密码保护,因此最终用户不会选择。这种情况会发生。我不确定是否有人能弄清楚为什么。。。您可能需要使用Windows API来获得更可靠的结果。