我们有一个运行MS Word(隐藏)以打印文档的应用程序。
如果其中一台打印机有问题,则在等待后台处理程序返回“排队”消息时,Word将挂起。
我们发现如果使Word可见(例如,通过在Excel中使用VBAGetObject
和oWordApp.visible=true
),则该过程将继续打印其他文档而没有问题。
我们希望通过对正在运行的进程中的Word进行VBScript检查来使其更加自动化,如果找到它,使其可见,等待几秒钟,将其隐藏,然后退出...
但是我有一个问题,如果VBScriptGetObject
函数尚未运行,它会实例化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
所以我应该使用什么来检查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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句