InetコントロールでFTPサーバー上のファイルを取得する
プログラムを作成しているのですが
自PCですとうまく取得するのですが他のPCだと取得できません。
OSは自他共にXPです。
ソースは下記の通りです。どこかおかしいのでしょうか?
よろしくお願いします。
With Frm.Inet1
.URL = Sys_FTPServer
.Password = Sys_PassWord
.UserName = Sys_ID
.Protocol = icFTP
.Execute , "CD /"
Do While .StillExecuting = True
DoEvents
Loop
.Execute , "DIR "
Do While .StillExecuting = True
DoEvents
Loop
.Execute , "GET " & FileName & " " & App.Path & "C:\result.txt"
Do While .StillExecuting = True
DoEvents
Loop
End With
Inetは使ったことが無いのでわかりませんが、
> .Execute , "GET " & FileName & " " & App.Path & "C:\result.txt"
ここのところちょっと変ですよ。
.Execute , "GET " & FileName & " " & App.Path & "\result.txt"
こうでは、それとも単なる写し間違いですか。
ごめんなさい。間違いでした。
ただしくはこうです。
.Execute , "GET " & FileName & " " & App.Path & "\result.txt"
>自PCですとうまく取得するのですが他のPCだと取得できません。
と言うことは、VBのコード自体に不具合は無いのでは。
.Execute , "CD /" の時に
「リモートホストに接続で出来ません」などとワーニングが出るのでしょうか?
PCのネットワーク等の設定の相違ではありませんか。
他PCの時に「リモートホストに接続で出来ません」等の
メッセージは出ていません。
GETした後、ローカルのファイルを開こうとすると
ファイルがありませんとエラーが出るのです。
これはGETがうまくいっていないということですよねぇ。
ちなみに自PCと他PCは同じLAN上にあり
他のアプリなどでそのFTPサーバー上の
ファイル処理は出来ています。(PUTの処理等)
>GETした後、ローカルのファイルを開こうとすると
>ファイルがありませんとエラーが出るのです。
何でローカルのファイルを開こうとしているのでしょうか?
エクスプローラーで見るとファイルはあるんでしょうか。
ねろ様、度々すみません。
>何でローカルのファイルを開こうとしているのでしょうか?
何でローカルで開くかというとそのGETしたファイルのデータで
処理を行うからなのです。その処理時間が結構時間がかかるので、
一度ローカルに落としたものを利用しようとしているのです。
>エクスプローラーで見るとファイルはあるんでしょうか。
ファイルありません。
ファイルがないということは、
1.Getがうまくいっていない
2.実は別の場所にダウンロードされている
のどちらかですかね?
2のほうはexeのある場所にGetしているようなので、
可能性はないと思いますが。
確認しているPCの構成に相違点はありませんか?
ディレクトリ構成、ネットワーク設定などなど
また確認時はexeで確認しているのでしょうか?
それともVB上で実行しているのでしょうか?
>確認しているPCの構成に相違点はありませんか?
>ディレクトリ構成、ネットワーク設定などなど
構成の相違点と言えばネットワーク設定は同じLANに
あるので同じです。
ディレクトリはApp.Pathの位置が
自PCはCドライブのルート上のフォルダの中
他PCはProgram Filesの中のフォルダのなかです。
確認時はexeでもエクスプローラーでも確認しています。
やはりこれはGETがうまくいっていないということですよねぇ。
他PCのほうでは"Program Files"とのことなので、
パスにスペースが入っているせいではないかと思います。
.Execute , "GET " & FileName & " """ & App.Path & "\result.txt"""
などと保存先のパスをダブルコーテーションで括ったほうがよいです。
早速試して実行してみたところうまくいきました。
GET以前の基本的なところのようですね。
とても勉強になりました。
ねろ様、長谷川様本当にありがとうございました。