• ベストアンサー

VBAでバッチ実行ができません

手動では動くバッチファイルがマクロからだと動きません。 何か必要なコマンドがあるのでしょうか? よろしくお願いします。 VBA--------- Shell "C:\test.bat", vbNormalFocus test.bat--------- perl a.pl b.log c.log d.log > e.csv exit OSがXP、Excelが2003です。

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

作業フォルダが違うのでは? BATファイルの中でフォルダの指定無しで指定されたファイルは、作業フォルダにあると看做されます。 例えば、Exploreからダブルクリックで起動すると、 作業フォルダは、そのファイルのあるフォルダ(「C:\test.bat」なら「C:\」)になります。 しかし、VBAの標準の作業フォルダは「ドキュメントフォルダ」になります。 そのため、「ドキュメントフォルダ」に各ファイルが無いと、参照できません。 VBA側で作業フォルダを変更してからShellを実行するか、 例えば、 ChDrive "C:" ChDir "C:\" Shell "C:\test.bat", vbNormalFocus と実行する。 BAT側でフルパスでファイルを指定するか、 例えば、 perl C:\a.pl C:\b.log C:\c.log C:\d.log > C:\e.csv と実行する。 BAT側でフォルダを変更してください。 例えば、 C: CD C:\ perl a.pl b.log c.log d.log > e.csv と実行する。

asami97
質問者

お礼

ChDir "C:\" Shell "C:\test.bat", vbNormalFocus でできました! カレントディレクトリがデフォルトだったんですね。 まったく気づきませんでした。 とっても助かりました。ありがとうございました。

関連するQ&A