excel - 检查 Word 实例是否正在运行
问题描述
我编写了 Excel VBA 来检查 Word 的任何实例是否已经在运行,但出现了一些问题。
- 如果我在没有打开文档的情况下打开 Word,则该行
If Err.Number = 0 Then wdAppRunning = True
返回False
.
通过 Windows 开始打开 Word
打开的 Word 实例。
- 如果在后台进程上运行 Word 的实例,则该行也返回
False
. - 如果我打开 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
解决方案
或者,您可以尝试使用
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
推荐阅读
- amazon-web-services - 在 AWS 中查找文件
- php - 使php识别是否单击了右键
- html - 使用 Formspree 的表单提交错误
- vmware - 将 WinDbg 连接到 vmware
- html - Angular NgFor 元素水平显示为标签
- oracle-sqldeveloper - 未找到父键,但存在 oracle DB
- git - Git Kraken 是否支持全局 git 挂钩
- google-cloud-storage - 如何找出 Google Cloud 支持的最新 Node.js 版本?
- r - 在使用 R 估计的 ergm 模型中解释 nodemix() 项的输出
- rust - 内联一个常用方法