vbnormalfocus - Ejecute un comando en el símbolo del sistema usando excel VBA
funciones vba excel pdf (1)
Tengo un comando fijo que necesito pasar al símbolo del sistema usando VBA y luego el comando debería ejecutarse. por ejemplo, "perl a.pl c: / temp"
siguiente es el comando que estoy tratando de usar, pero simplemente abre el símbolo del sistema y no ejecuta el comando.
Call Shell("cmd.exe -s:" & "perl a.pl c:/temp", vbNormalFocus)
Por favor, compruebe.
El parámetro S no hace nada por sí mismo.
/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
Pruebe algo así en su lugar
Call Shell("cmd.exe /S /K" & "perl a.pl c:/temp", vbNormalFocus)
Es posible que ni siquiera necesite agregar "cmd.exe" a este comando a menos que desee abrir una ventana de comandos cuando se ejecute. Shell debería ejecutar el comando por sí mismo.
Shell("perl a.pl c:/temp")
-Editar-
Para esperar a que termine el comando, tendrá que hacer algo como @Nate Hekman muestra en su respuesta here
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