アプリ版:「スタンプのみでお礼する」機能のリリースについて

Windows/XP/pro、エクセル2002 使用です。
c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。
参考URL http://www.ponko2.com/ftp_bat.html

この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか?
Sub test()
Dim str As Variant
str = Shell("c:\autocsv\auto.bat", vbNormalFocus)
Application.Wait Now + TimeValue("00:00:10")
End Sub
(VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません)
なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。

お手数ですが、ご指導いただけますようお願いします。

A 回答 (3件)

まことに申し訳ありません。


CMD/Cを書いてはいけません。動作しません。

当方、試験でauto.batを以下の記述として、結果が得られました。
(cmd/c無しです。ホントにすみません)

dir > c:\dirtext.txt
exit

実行後にカレント(Mydocuments)フォルダの一覧をCドライブのルート(C:\)にdirtext.txtとしてテキスト化します。


なのでauto.bat の内容の問題と思います。
    • good
    • 0
この回答へのお礼

bin-chan様、ありがとうございました。
cmd/cはあった方が良いみたいです。
ご指摘通りauto.batの他のプログラムから実行するときは、.batファイルと一緒のフォルダーに入れていても、.batの実行でパス位置を取得する必要があるみたいです。

本当にありがとうございました。今後ともよろしくお願いします。

お礼日時:2006/04/28 10:01

#1です。


OSがXPでしたね。

str = Shell("c:\autocsv\auto.bat", vbNormalFocus)

str = Shell("cmd/cc:\autocsv\auto.bat", vbNormalFocus)
としてください。

さらに、バッチの最後の行に
EXIT
を一行追加してください。
単独実行の場合には影響ありませんが、CMD/Cで作成したShellを閉じる必要があります。

この回答への補足

bin-chan様、早速のご回答ありがとうございます。
何故か、ファイルが見つかりませんとなります。
ファイルは間違いなく存在します。
ドライブの指定の前にコマンドがいるのですね>>>
自分でも試してみますが、できればご回答よろしくお願いします!!!

補足日時:2006/04/27 15:39
    • good
    • 0

str = Shell("c:\autocsv\auto.bat", vbNormalFocus)



str = Shell("command/cc:\autocsv\auto.bat", vbNormalFocus)
としてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています