• ベストアンサー

web上のCSVファイルをダウンロードするマクロ

web上のCSVファイルを数秒毎にダウンロードしてテキストモードで上書き保存するマクロを作りたいのですがどのように記述すればよいでしょうか。 Windows XP SP3 Microsoft Exce2000です。 コピー元 http://www.***.***/101.csv 102.csv ベーシック認証ありuser=**** password=**** コピー保存先 c:\****\101.csv ファイルサイズは20KB前後です。 超初心者ですがどうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

clarice44
質問者

お礼

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

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

本日、ずっと調べてみました。 ダウンロードの方法は、あちこちを検索すれば出てきますが、私の知っている範囲では、あくまでも、オープンの場所に限ります。また、CSVを数秒毎にダウンロードすることは可能です。 場所を特定していませんから、汎用性のあるマクロを書けということになると思いますが、それは不可能です。調べてみると、それぞれのサイトには、文字コードやユーザー名・パスワードの入力IDが異なったりしますから、それを探し出すのは、そのサイトの解析をしなければなりません。 また、ここのサイトのように、Cookieが設定してあって、一定の期間、パスワードを求められずにオープンのままアクセスは出来るかとは思います。ただし、IEオートメーションに限りますから、数を重ねるとストップしてしまいます。とても、IEオートメーションでは、数秒毎にダウンロードは不可能だと思います。 http://okwave.jp/qa/q6398307.html 質問内容は、多少、似ていても上記のどれの回答も該当しません、うまく行かないという雰囲気はなんとなく分かっていただけると思います。

clarice44
質問者

補足

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

関連するQ&A