Temps réel de la sortie de la console de WScript.Shell Exec

J'ai passé la plupart de la journée à la recherche d'une solution à cela, je commence à penser que sa peut-être pas possible pour mes besoins

Ma configuration de base est d'exécuter un script vbscript (.vbs) a appelé à partir d'un code excel vba. Le code vba est de continuer et de laisser le vbscript en cours d'exécution, mais de le surveiller de temps en temps à l'aide de Exec.Status

Dans le vbscript je suis en utilisant WScript.StdOut.WriteLine "whatever" de suivi/debug c'est déjà un progrès, mais en l'état actuel je ne peux que lire c'est sortie après le code excel vba est fini ce qu'il doit faire.

Ce que je veux, c'est de voir un vrai temps de sortie de la console à partir du vbscript

Voici le code 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)

J'ai été en mesure d'obtenir en temps réel de la sortie par la conversion de WSH.Exec à WSH.Run, mais je n'ai besoin de l'accès à Exec.Status, ce qui n'est pas disponible sous WSH.Run


Mise à JOUR - 2015-02-06

De préciser plus loin... à l'Aide de l'exemple " ...B. vbs code fourni par @Ekkehard.De Horner réponse... suivantes excel-vba code d'affichage en temps réel de la sortie de la console...

WSH.Run("cscript C:353522-B.vbs")

...mais la suivante NE rien afficher à la console

WSH.Exec("cscript C:353522-B.vbs")

Je ne peux pas utiliser le .Run() parce que je utiliser le .Status drapeau de .Exec()
Aussi je ne peux pas il suffit de déplacer le code vbscript dans le code VBA parce que le VBA passe pour effectuer d'autres tâches en parallèle avec le vbscript.

P. s. Si n'importe qui peut soumettre une réponse expliquant pourquoi il ne peut pas être fait, alors je marque comme acceptée.

OriginalL'auteur Skytunnel | 2015-02-05