web-dev-qa-db-fra.com

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

J'ai une commande fixe que j'ai besoin de transmettre à l'invite de commande à l'aide de VBA, puis la commande doit être exécutée. par exemple. "Perl a.pl c:\temp"

voici la commande que j'essaie d'utiliser, mais elle ouvre simplement la commande Invite et n'exécute pas la commande.

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

Vérifiez s'il vous plaît.

37
user1699227

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 n'aurez peut-être même pas besoin d'ajouter "cmd.exe" à cette commande, sauf si vous souhaitez qu'une fenêtre de commande s'ouvre lorsque celle-ci est exécutée. Shell devrait exécuter la commande seul.

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



- Éditer -
Pour attendre la fin de la commande, vous devrez faire quelque chose comme @Nate Hekman 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
53
Ripster