连接到正在运行的 MS Word 实例并将此应用程序置于最前面的“正确”(推荐)方法是什么?我正在从 VBA 应用程序中执行以下操作:
...
objWord = GetObject ("Word.Application")
if (objWord is nothing) then
objWord = CreateObject("Word.Application")
end if
objWord.Activate()
objWord.Visible = true
objWord.WindowState = 1 'maximized
...
在带有 Word 2007 的 Windows XP 上运行,这在大多数情况下都有效 - 但有时无法将 Word 窗口置于最前面(而是在任务栏中闪烁 Word 的最小化图标)。
注意:我通过使用 FindWindow Win API 调用部分解决了这个问题:
hwnd = FindWindow("OpusApp", vbNullString)
If hwnd > 0 Then
SetForegroundWindow (hwnd)
end if
这不是 100%,因为(正如 drventure 指出的那样),如果 Word 的多个实例正在运行,您无法确定您将处理哪个。因为当我的代码启动 Word 时,它首先使用 GetObject,然后如果失败则使用 CreateObject,只要有一个 Word 实例开始运行,我就可以了。