VBA.激活“不使用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

我正在编写一个excel工作簿,其中包含许多用户表单,并附带一个用户指南。在用户表单上,我想包括一个“帮助”按钮,单击该按钮可打开用户指南,指向按下按钮的用户表单的相关部分。我已经编写了代码,它基本上是有效的,但是一旦按下按钮,我就无法使word文档始终成为活动窗口。我有以下代码:

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来获得更可靠的结果。