我们有一个运行MS Word(隐藏)以打印文档的应用程序。
如果其中一台打印机有问题,则在等待后台处理程序返回“排队”消息时,Word将挂起。
我们发现如果使Word可见(例如,通过在Excel中使用VBA GetObject和oWordApp.visible=true),该过程将继续打印其他文档而不会出现问题。
我们希望通过对正在运行的进程中的Word进行VBScript检查来使其更加自动化,如果找到它,使其可见,等待几秒钟,将其隐藏,然后退出...
但是我有一个问题,如果VBScript GetObject函数尚未运行,它会实例化Word。
如何在不创建单词实例的情况下使用VBScript检查该单词是否正在运行?
这是我在VBScript文件中拥有的代码:
dim oWord, WScriptShell
set oWord = getobject("", "Word.Application")
set WScriptShell = CreateObject("WScript.Shell")
if isobject(oWord) then 'and oWord.Documents.count>0
wscript.echo("Word is running")
oWord.visible=true
WScript.Sleep 1000
oWord.visible=false
else
wscript.echo("Word not running")
end if
Run Code Online (Sandbox Code Playgroud)
所以我应该使用什么来检查word是否在运行而不创建它的实例?
只需更改GetObject("", "Word.Application")为GetObject(, "Word.Application"),它就不会启动实例。
但这会在Word 未运行时引发错误,因此您可以像这样使用它:
msgbox wordIsRunning
function wordIsRunning
dim wdApp
on error resume next
set wdApp = GetObject(, "Word.Application")
wordIsRunning = (err.Number = 0)
set wdApp = nothing
end function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2994 次 |
| 最近记录: |