作者:书友64457430 | 来源:互联网 | 2023-05-23 11:59
我花了大部分时间寻找解决方案,我开始认为它可能不符合我的要求
我的基本设置是运行从excel vba代码调用的Vbscript(.vbs).vba代码必须继续运行并使Vbscript保持运行,但会不时使用它进行监视Exec.Status
在Vbscript中,我用它WScript.StdOut.WriteLine "whatever"
来跟踪/调试它的进度,但就目前而言,我只能在excel vba代码完成后才能读取它的输出.
我想要的是从Vbscript看到实时输出到控制台
这是vba代码......
Dim WSH As IWshRuntimeLibrary.WshShell 'Windows Script Host Object Model
Dim Exec As WshExec
Set WSH = CreateObject("WScript.Shell")
Set Exec = WSH.Exec("%COMSPEC% /C CSCRIPT.EXE //nologo " _
& VbsFileDir _
& " " & Arg1 _
& " " & Arg2 _
& " " & Arg3 _
& " " & Arg4)
我已经能够通过转换来获得实时输出WSH.Exec
到WSH.Run
,但我确实需要访问Exec.Status
,这是不是可以下WSH.Run
更新 - 2015-02-06
进一步澄清......使用@ Ekkehard.Horner提供的示例'... B.vbs'代码答案......以下excel-vba代码将向控制台显示实时输出...
WSH.Run("cscript C:\28353522-B.vbs")
...但以下内容不会向控制台显示任何内容
WSH.Exec("cscript C:\28353522-B.vbs")
我无法使用,.Run()
因为我使用了.Status
标志.Exec()
而且我不能只将Vbscript移动到VBA代码中,因为VBA继续与Vbscript并行执行其他任务.
Ps如果有人能提交答案解释为什么不能这样做,那么我会将其标记为已接受.