ウェブ上のファイルダウンロードのマクロ作成をお願いします。もしそのまま使える完全な回答をしていただいた最初の回答者の方に、お気持ちですが1000ポイント差し上げます。よろしくお願いいたします。具体的にはこちらのサイトです。(http://isin.krx.co.kr/)ダウンロードページへは、トップメニュー(背景が青の部分です)の右から二つ目の項目の、上から4つ目のリンクです(5文字のリンク)。リンク先のページにあるフィールドにコードを打ち込み、ToExcelを押すことでエクセルファイルをダウンロードするのですが、IDがかなり多くあるため、そのプロセスを自動化したいです。Sheet1、A2以下には以下の5桁IDが入力されています。00867、00354、00680、00594、03075、00172、01636、03049、00345、03762、00856、09588、03061、10083、00120、00347、00353、01642など。是非ご協力お願いいたします。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2009/07/17 17:07:31
  • 終了:2009/07/17 18:11:26

回答(1件)

id:HALSPECIAL No.1

HALSPECIAL回答回数407ベストアンサー獲得回数862009/07/17 17:43:48

ポイント1000pt

Option Explicit

Const DEST = "D:\保存フォルダ" '保存先のフォルダ  ■ここを変える


Public Sub XlFileDownLoad()
    Const URL_PATTERN As String = "http://isin.krx.co.kr/jsp/BA_LT133_EXCEL.jsp?pg_no=1&wr_r_cd=&ef_iss_inst_cd={0}"

    Range("A2").Activate
    
    Do Until ActiveCell.Value = ""
        Dim cd As String
        cd = ActiveCell.Value
        Dim url As String
        url = Replace(URL_PATTERN, "{0}", cd)
        Dim fname As String
        fname = DEST & "\" & cd & ".xls"
        Call DL(url, fname)
        ActiveCell.Offset(1, 0).Activate
    Loop
    
    Range("A1").Activate

    MsgBox "終了", vbInformation
    
End Sub

Private Sub DL(ByVal url As String, ByVal fname As String)
    Const adTypeBinary = 1
    Const adSaveCreateOverWrite = 2
    
    Dim xmlHttp
    Set xmlHttp = CreateObject("Msxml2.XMLHTTP")
    xmlHttp.Open "GET", url, False
    xmlHttp.Send
    
    Dim stream
    Set stream = CreateObject("Adodb.stream")
    stream.Type = adTypeBinary
    stream.Open
    stream.Write xmlHttp.responseBody
    stream.Savetofile fname, adSaveCreateOverWrite
    Set stream = Nothing
    Set xmlHttp = Nothing

End Sub

こちらでどうでしょう。

id:tororosoba

HALSPECIALさん、お恥ずかしい質問なのですが、標準モジュールではない場合、どこにペーストすればよろしいのでしょうか・・・ご教授いただけると助かります。

2009/07/17 18:00:53
  • id:tororosoba
    HALSPECIALさん、先ほどの質問ですが解決いたしました。
    迅速にご対応いただきまして本当にありがとうございました。
    非常に助かりました。

  • id:HALSPECIAL
    HALSPECIAL 2009/07/17 18:36:47
    たくさんのポイントありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません