では、URLを可変にしていきます。
銘柄コードはA列に入力しています。
2行目からデータが始まっているので、
strCode = Cells(2, "A")
とすると、先頭コードが取得できます。
デバッグ実行すると、3048が取得できました。
そう、先頭コードはビックカメラでした(笑)
とりあえず、A列が空になるまでループして
コードを取得してみます。
Dim strCode As String Dim rowIndex As Integer rowIndex = 2 strCode = Cells(rowIndex, "A") Do While strCode <> "" rowIndex = rowIndex + 1 strCode = Cells(rowIndex, "A") Loop |
コードは問題なく取れました^^
さて、あとURLに必要なのは日付です。
市場の開いている日となると、考えるのが面倒なので、
シートのあいている場所に更新日を持たせ、更新日~今日のデータを取得してしまいます。
私は、更新日内でも再度更新するかもしれないので(時系列データが更新された後でもう一回、とか)
更新日からにしていますが、
必要なければ日付を比較してExitしてしまうのがいいかと思います。
更新日がないときのための初期値を指定
Private Const INITUPDATEDD As Date = "2012/08/9" |
シートから更新日(検索の開始日)を取得
'開始日取得 updateDate = Cells(1, "S") If updateDate = 0 Then updateDate = INITUPDATEDD End If |
上の銘柄コードの取得と合わせてURL作成して
ダウンロード。
'最初のコード取得 rowIndex = 2 strCode = Cells(rowIndex, "A") Do While strCode <> "" 'URL生成 strUrl = "http://info.finance.yahoo.co.jp/history/?code=" strUrl = strUrl + strCode + "&" strUrl = strUrl + "sy=" + CStr(Year(updateDate)) + "&" strUrl = strUrl + "sm=" + CStr(Month(updateDate)) + "&" strUrl = strUrl + "sd=" + CStr(Day(updateDate)) + "&" strUrl = strUrl + "ey=" + CStr(Year(Now)) + "&" strUrl = strUrl + "em=" + CStr(Month(Now)) + "&" strUrl = strUrl + "ed=" + CStr(Day(Now)) + "&" strUrl = strUrl + "tm=d" Set html = New MSHTML.HTMLDocument Set document = html.createDocumentFromUrl(strUrl, vbNullString)
' ダウンロード待ち Do DoEvents If (document.readyState = "complete") Then Exit Do End If Loop While (True) resHtml = document.body.innerHTML '次のコード取得 rowIndex = rowIndex + 1 strCode = Cells(rowIndex, "A")
Loop '更新日更新 Cells(1, "S") = Now |
ウォッチで表示できている範囲が短すぎてデータがちゃんと取れているのか不安ですが(笑)
次回は取得したhtmlの中身を解析します。
2012-08-11 06:00
nice!(0)
コメント(0)
トラックバック(0)
共通テーマ:株
コメント 0