プロが教えるわが家の防犯対策術!

web上のCSVファイルを数秒毎にダウンロードしてテキストモードで上書き保存するマクロを作りたいのですがどのように記述すればよいでしょうか。
Windows XP SP3 Microsoft Exce2000です。

コピー元 http://www.***.***/101.csv 102.csv ベーシック認証ありuser=**** password=****
コピー保存先 c:\****\101.csv
ファイルサイズは20KB前後です。
超初心者ですがどうぞよろしくお願いします。

A 回答 (2件)

個人的に、その時々に、こうした質問が出るたびに、同じ問題をずっと考えています。

まだ、解決していない部分が残っています。

>認証は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
    • good
    • 0
この回答へのお礼

気がつくのがおそくお礼が遅れて申し訳ありませんでした。
お蔭様で解決できました。
ありがとうございました。

お礼日時:2010/12/27 10:28

本日、ずっと調べてみました。



ダウンロードの方法は、あちこちを検索すれば出てきますが、私の知っている範囲では、あくまでも、オープンの場所に限ります。また、CSVを数秒毎にダウンロードすることは可能です。

場所を特定していませんから、汎用性のあるマクロを書けということになると思いますが、それは不可能です。調べてみると、それぞれのサイトには、文字コードやユーザー名・パスワードの入力IDが異なったりしますから、それを探し出すのは、そのサイトの解析をしなければなりません。

また、ここのサイトのように、Cookieが設定してあって、一定の期間、パスワードを求められずにオープンのままアクセスは出来るかとは思います。ただし、IEオートメーションに限りますから、数を重ねるとストップしてしまいます。とても、IEオートメーションでは、数秒毎にダウンロードは不可能だと思います。

http://oshiete.goo.ne.jp/qa/6398307.html
質問内容は、多少、似ていても上記のどれの回答も該当しません、うまく行かないという雰囲気はなんとなく分かっていただけると思います。

この回答への補足

いろいろ調べて頂き本当にありがとうございます。
友人に協力してもらい試行錯誤聞き込みを繰り返しました結果、認証はhttp://ユーザ:パス@****.netという方法で、数秒毎のダウンロードはOnTimeを使うことで何とかクリア致しました。
だけどもうひとつhttpのダウンロードのためアスキーモードでのダウンロードか出来なくてこの変換の課題が残っています。
コピー保存先 c:\****\101.csvからLFをCRLFに変換できる記述方法がございましたらどうかご教授お願いします。m(_"_)m

補足日時:2010/12/25 00:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!