Exécuter une commande dans l'invite de commande en utilisant excel VBA

j'ai une commande fixe que je dois passer pour commander prompt en utilisant VBA et puis la commande devrait s'exécuter. par exemple " Perla.pl c:temp "

la commande suivante est celle que j'essaie d'utiliser mais elle n'ouvre que l'invite de commande et n'exécute pas la commande.

Call Shell("cmd.exe -s:" & "perl a.pl c:temp", vbNormalFocus)

s'il vous Plaît vérifier.

33
demandé sur TotsieMae 2013-07-31 00:22:22

1 réponses

le paramètre S ne fait rien par lui-même.

/S      Modifies the treatment of string after /C or /K (see below) 
/C      Carries out the command specified by string and then terminates  
/K      Carries out the command specified by string but remains  

Essayez quelque chose comme ça à la place

Call Shell("cmd.exe /S /K" & "perl a.pl c:\temp", vbNormalFocus)

vous pouvez même ne pas avoir besoin d'ajouter" cmd.exe" pour cette commande si vous souhaitez une fenêtre de commande pour ouvrir quand c'est exécuter. Shell devrait exécuter la commande elle-même.

Shell("perl a.pl c:\temp")





-Edit -

Pour attendre la fin de la commande vous devrez faire quelque chose comme @Nate Hekman montre dans sa réponse ici

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1

wsh.Run "cmd.exe /S /C perl a.pl c:\temp", windowStyle, waitOnReturn
46
répondu Ripster 2017-05-23 11:33:24