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.
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