
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ファイルの取得はできています。
お手数ですが、ご指導いただけますようお願いします。
No.3ベストアンサー
- 回答日時:
まことに申し訳ありません。
CMD/Cを書いてはいけません。動作しません。
当方、試験でauto.batを以下の記述として、結果が得られました。
(cmd/c無しです。ホントにすみません)
dir > c:\dirtext.txt
exit
実行後にカレント(Mydocuments)フォルダの一覧をCドライブのルート(C:\)にdirtext.txtとしてテキスト化します。
なのでauto.bat の内容の問題と思います。
bin-chan様、ありがとうございました。
cmd/cはあった方が良いみたいです。
ご指摘通りauto.batの他のプログラムから実行するときは、.batファイルと一緒のフォルダーに入れていても、.batの実行でパス位置を取得する必要があるみたいです。
本当にありがとうございました。今後ともよろしくお願いします。
No.2
- 回答日時:
#1です。
OSがXPでしたね。
str = Shell("c:\autocsv\auto.bat", vbNormalFocus)
を
str = Shell("cmd/cc:\autocsv\auto.bat", vbNormalFocus)
としてください。
さらに、バッチの最後の行に
EXIT
を一行追加してください。
単独実行の場合には影響ありませんが、CMD/Cで作成したShellを閉じる必要があります。
この回答への補足
bin-chan様、早速のご回答ありがとうございます。
何故か、ファイルが見つかりませんとなります。
ファイルは間違いなく存在します。
ドライブの指定の前にコマンドがいるのですね>>>
自分でも試してみますが、できればご回答よろしくお願いします!!!
No.1
- 回答日時:
str = Shell("c:\autocsv\auto.bat", vbNormalFocus)
を
str = Shell("command/cc:\autocsv\auto.bat", vbNormalFocus)
としてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
複数のbatファイルを自動実行し...
-
ActiveXコントロールの使用許可...
-
VBScriptでコマンドプロンプト...
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
Windows System32 Security Hea...
-
これってパソコンの最適化が完...
-
vbscriptを用いて他のVBSファイ...
-
exeファイルを実行するとコマン...
-
.cshrcについて教えてください。
-
「command not found」メッセー...
-
VScodeのエラー解決法 Pythonの...
-
自前サーバでCGIを~
-
PDFファイルを開き、印刷し、閉...
-
Software Distribution folder ...
-
Excel(エクセル) VBA プロシー...
-
cpadでプログラムが実行できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
これってパソコンの最適化が完...
-
「読み取りと実行」と「読み取...
-
複数のbatファイルを自動実行し...
-
Windows System32 Security Hea...
-
ネットワーク名が見つかりません
-
エクセル フォルダの画像を画...
-
Excel(エクセル) VBA プロシー...
-
PDFファイルを開き、印刷し、閉...
-
Access の VBA 実行中に他の操...
-
バッチファイルが不正終了して...
-
VScodeのエラー解決法 Pythonの...
-
VBScriptでコマンドプロンプト...
-
pythonスクリプトを管理者権限...
-
VB.NETでのDOSコマンドを実行に...
-
batからexeを実行し戻り値を受...
おすすめ情報