web-dev-qa-db-ja.com

Excel VBAを使用してコマンドプロンプトでコマンドを実行する

VBAを使用してコマンドプロンプトに渡す必要がある固定コマンドがあり、コマンドを実行する必要があります。例えば「Perl a.pl c:\ temp」

以下は私が使用しようとしているコマンドですが、コマンドプロンプトを開き、コマンドを実行しません。

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

チェックしてください。

37
user1699227

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
53
Ripster