- ベストアンサー
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です。
- みんなの回答 (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 と実行する。
お礼
ChDir "C:\" Shell "C:\test.bat", vbNormalFocus でできました! カレントディレクトリがデフォルトだったんですね。 まったく気づきませんでした。 とっても助かりました。ありがとうございました。