1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| ' ---------------------------------------------------------
' Exécution d'un programme type console et récupération
' de sa sortie standard
' ---------------------------------------------------------
' Référence VB :
' * Ajouter une référence à "Windows Script Host Object Model"
' -> bibliothèque IWshRuntimeLibrary (c:\WINDOWS\system32\wshom.ocx)
'
' Arguments
' sCmd : Ligne de commande
' sStdOut : (ByRef) Chaîne de caractère sortie standard
' sStdErr : (ByRef) Chaîne de caractère sortie erreur
' ---------------------------------------------------------
Sub ExecConsolePgm(sCmd As String, ByRef sStdOut As String, ByRef sStdErr As String)
Dim oShell As IWshRuntimeLibrary.WshShell
Dim oExec As IWshRuntimeLibrary.WshExec
Dim sOut As String, sErr As String
On Error GoTo Proc_Err_H
' Création objet Shell
Set oShell = New IWshRuntimeLibrary.WshShell
' Exécution de la ligne de commande
Set oExec = oShell.Exec(sCmd)
If Not oExec Is Nothing Then
' Attend la fin d'exécution
Do While oExec.Status = 0 ' 0 = WshRunning
DoEvents
Loop
' Lit les sorties standard et erreur
sOut = oExec.StdOut.ReadAll()
sErr = oExec.StdErr.ReadAll()
End If
Proc_Exit:
' Met le résultat dans les variables des arguments passés par référence
sStdOut = sOut
sStdErr = sErr
' Libération des variables objet
Set oExec = Nothing
Set oShell = Nothing
Exit Sub
Proc_Err_H:
sErr = "Erreur VBA N° " & Err.Number & " : " & Err.Description
Resume Proc_Exit
End Sub |
Partager