VBAを使用してコマンドプロンプトに渡す必要がある固定コマンドがあり、コマンドを実行する必要があります。例えば「Perl a.pl c:\ temp」
以下は私が使用しようとしているコマンドですが、コマンドプロンプトを開き、コマンドを実行しません。
Call Shell("cmd.exe -s:" & "Perl a.pl c:\temp", vbNormalFocus)
チェックしてください。
Sパラメーターは、それ自体では何もしません。
/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
代わりにこのようなものを試してください
Call Shell("cmd.exe /S /K" & "Perl a.pl c:\temp", vbNormalFocus)
コマンドの実行時にコマンドウィンドウを開く場合を除き、このコマンドに「cmd.exe」を追加する必要はありません。シェルは、コマンドを単独で実行する必要があります。
Shell("Perl a.pl c:\temp")
-Edit-
コマンドが完了するのを待つには、@ Nate Hekmanが答えで示すようなことをする必要があります 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