Accessのマクロからftpアップロードのbatファイル実行について

投稿者: Anonymous

Accessマクロの「アプリケーションの実行」でftpへデータをアップロードするbatファイルを実行しようとしてますがうまくいきません。
直接batファイルを実行するとうまくいきますが、アプリケーションの実行でbatファイル実行するとうまくいかない状況です。
流れとしては以下の通りになります。

  1. ftpへファイルをアップロードするbatファイルを作成。
  2. 1.のbatファイルを実行し、ftpへデータがアップロードがされた事を確認。
  3. 1.のbatファイルを今度はAccessマクロの「アプリケーションの実行」で実行。
  4. 一瞬コマンドプロンプトの画面が表示されるもすぐに消え、マクロが終了。ftpへファイルがアップロードされていない。

現象や解決策に心当たり有ればアドバイス頂いてもよろしいでしょうか。
なお、batファイルの中身はftpにアクセスしてdelでファイルを削除した後にputでファイルを保存するだけのものです。

batファイルの内容

open 【ftpのアドレス】
【ftpのID】
【ftpのパス】
bin
prompt

cd jousen

del 【削除するファイル名】
put C:【アップロードするファイル名】

bye

実行しようとしたbatファイルの内容は上記の通りです。
Accessからではなく直で実行すると、上記に記載された内容がコマンドプロンプトに表示されてアップロードが完了しますが、
Accessの「アプリケーションの実行」から行うと画像のように
一瞬だけコマンドプロンプト出て消えてしまいます。

一瞬だけコマンドプロンプトが出てきているところのスクリーンショットです。

batの最後のbyeをカットしても結果は同じなので、batファイルの内容見に行く前になんらかのエラーで終了している気もしますが、それがどんなエラーか見当つかずの状態です。。。

>sayuriさん
正確な情報提示できておらずすいません。

比較対象の直接実行したファイルですが、「ftpcopy_面談.bat」というファイルを実行(ダブルクリック)します。
中身は以下の通りです。
 ftp -s:ftp_bat.txt

で、ftp_bat.txtの中身が上の方で記載したソースになります。
ftpcopy_面談.batもftp_bat.txtもAccessファイルも全て同じフォルダ(ローカル端末上)に保存しております。

>kunifさん
アドバイス頂きありがとうございます。
リンク先を参考に、作業フォルダや各種パスの環境も見直してみます。

解決

ftpcopy_面談.bat

ftp -s:ftp_bat.txt

このコマンドですと、カレントディレクトリにあるftp_bat.txtを検索します。
エクスプローラー上でftpcopy_面談.batをダブルクリックして実行した場合、ftpcopy_面談.batが置かれているディレクトリがカレントディレクトリに設定されるためftp_bat.txt見つけることができます。
しかし、Accessマクロの「アプリケーションの実行」ではカレントディレクトリが明示されていないためftp_bat.txtを見つけられていない可能性があります。
%~dp0でバッチファイルの存在するディレクトリを表すことができるため

ftp -s:%~dp0ftp_bat.txt

と変更して試してみてください。


「実行しようとしたbatファイル」は実際にはbatファイルではありません。質問文の更新を待ちますが

  • 成功した「直接batファイルを実行」の操作
  • 失敗したAccessマクロの「アプリケーションの実行」

とが一致していないと思われます。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *