VBAを使用してコマンドプロンプトに渡す必要のある固定コマンドがあり、コマンドを実行する必要があります。例: "perl a.pl c:\ temp"excel VBAを使用してコマンドプロンプトでコマンドを実行
以下は私が使用しようとしているコマンドですが、コマンドプロンプトを開き、コマンドを実行しません。
Call Shell("cmd.exe -s:" & "perl a.pl c:\temp", vbNormalFocus)
ご確認ください。
VBAを使用してコマンドプロンプトに渡す必要のある固定コマンドがあり、コマンドを実行する必要があります。例: "perl a.pl c:\ temp"excel VBAを使用してコマンドプロンプトでコマンドを実行
以下は私が使用しようとしているコマンドですが、コマンドプロンプトを開き、コマンドを実行しません。
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
あなたも、あなたはこれが実行されたときに、コマンドウィンドウを開きたい場合を除き、このコマンドに「cmd.exeの」を追加する必要はないかもしれない代わりに
Call Shell("cmd.exe /S /K" & "perl a.pl c:\temp", vbNormalFocus)
をこのような何かを試してみてください。シェルは、コマンドを単独で実行する必要があります。 @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
シェルはプロセスを起動した後に戻ります。あなたのPerl-Scriptが終了するのを待つことはありません。 – AKDADEVIL
ありがとうございました。これはうまく動作します。 "Perl-Scriptが終了するのを待つ"コードは何でしょうか? – user1699227
私は[この](http://stackoverflow.com/questions/15951837/excel-vba-wait-for-shell-command-to-complete)のような何かをしなければならないと思う – Ripster
彼の答えに示したように
-Edit-
は、あなたが何かをする必要があります終了するコマンドを待つために、実際にはcmd.exeを開く必要があります。 - > Shell()はperl.exeに直接perlのargsを渡すことができます –