質問: 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の「アプリケーションの実行」から行うと画像のように 一瞬だけコマンドプロンプト出て消えてしまいます。 ![一瞬だけコマンドプロンプトが出てきているところのスクリーンショットです。](https://i.stack.imgur.com/0DGfz.jpg) 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マクロの「アプリケーションの実行」 とが一致していないと思われます。