【发布时间】:2015-02-05 20:35:10
【问题描述】:
我花了大部分时间寻找解决方案,我开始认为这可能无法满足我的要求
我的基本设置是运行从 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(),因为我使用来自.Exec() 的.Status 标志
此外,我不能只将 vbscript 移动到 VBA 代码中,因为 VBA 会继续与 vbscript 并行执行其他任务。
附:如果有人可以提交解释为什么无法完成的答案,那么我会将其标记为已接受。
【问题讨论】:
标签: excel vbscript console wsh vba