質問: web上のcsvファイルをダウンロードするマクロ web上のcsvファイルを数秒毎にダウンロードしてテキストモードで上書き保存するマクロを作りたいのですがどのように記述すればよいでしょうか。 windows xp sp3 microsoft exce2000です。 コピー元 http://www.***.***/101.csv 102.csv ベーシック認証ありuser=**** password=**** コピー保存先 c:\****\101.csv ファイルサイズは20kb前後です。 超初心者ですがどうぞよろしくお願いします。
回答: 個人的に、その時々に、こうした質問が出るたびに、同じ問題をずっと考えています。まだ、解決していない部分が残っています。 >認証はhttp://ユーザ:パス@****.netという方法で、 これで、オープンの状態になるなら、取れるかもしれませんね。 昔は、こういう書き方をしていたようですが、今は、こういう方法は使ったことがありませんので分かりませんでした。私自身が課題としている部分とは違うようです。 >だけどもうひとつhttpのダウンロードのためアスキーモードでのダウンロードか出来なくてこの変換の課題が残っています。 たぶん、オープンした後に、どこかをクリックしてダウンロードするとかいう種類のものでしょうか? http://ユーザ:パス@****.net そのまま、http://www.***.***/101.csv 102.csv としても、ieオブジェクトなら可能ですが、wininet やwinhttp では無理になってしまいます。そうすると、ie windowを取得して、開いた後にアクセスするというスタイルになるのだろうとは思います。それも、今の私では、具体的な例がないと作成できる自信がありません。 >コピー保存先 c:\****\101.csvからlfをcrlf ふつうは、テキストエディタでも置換出来ますが、ファイル replace 関数を使って、以下のようにすると簡単に変換できます。 sub converttest1() dim ifno as integer dim ofno as integer dim textline as string dim buf as string, i as long dim fname as string dim ofname as string dim mpath as string '***import filename fname = "c:\****\101.csv" '******* i = instrrev(fname, "\") 'export filename mpath = mid(fname, 1, i) ofname = mpath & "$" & mid(fname, i + 1) ifno = freefile() open fname for input as #ifno ofno = freefile() open ofname for output as #ofno do until eof(ifno) line input #ifno, textline buf = replace(textline, vblf, vbcrlf, , , 1) print #ofno, buf textline = "" loop close #ifno close #ofno 'ファイル名の入れ替え on error resume next name fname as "tmp" name ofname as fname name mpath & "tmp" as fname kill "tmp" on error goto 0 beep end sub