首页 > 解决方案 > 检查 Word 实例是否正在运行

问题描述

我编写了 Excel VBA 来检查 Word 的任何实例是否已经在运行,但出现了一些问题。

  1. 如果我在没有打开文档的情况下打开 Word,则该行If Err.Number = 0 Then wdAppRunning = True返回False.

通过 Windows 开始打开 ​​Word

在此处输入图像描述

打开的 Word 实例。

在此处输入图像描述

  1. 如果在后台进程上运行 Word 的实例,则该行也返回False.
  2. 如果我打开 Word,创建或打开一个文档,然后运行宏,它会返回预期的结果 ( True)

如何管理代码以至少识别第 1 种情况?

Ps.:链接获取Word实例并保存文档中发布的代码返回相同的情况。

Sub wdAppRunning()
    Dim wdApp As Object
    Dim wdAppRunning As Boolean

    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If Err.Number = 0 Then wdAppRunning = True

    MsgBox wdAppRunning
    Set wdApp = Nothing

End Sub

标签: excelvbams-word

解决方案


或者,您可以尝试使用

Public Function Is_Word_Running() As Boolean

   Dim WMG As Object, Proc As Object

    Is_Word_Running = False
    Set WMG = GetObject("winmgmts:")
    For Each Proc In WMG.InstancesOf("win32_process")
        If UCase(Trim(Proc.Name)) = "WINWORD.EXE" Then
            Is_Word_Running = True
            Exit For
        End If
    Next Proc
    Set WMG = Nothing

End Function

推荐阅读