Pregunta Ejecute un comando en el símbolo del sistema usando excel VBA


Tengo un comando fijo que necesito pasar al símbolo del sistema usando VBA y luego el comando debería ejecutarse. p.ej. "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.


32
2017-07-30 20:22


origen


Respuestas:


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 aquí

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

45
2017-07-30 20:33