SSブログ

Kingsoft Spreadsheetsで株価取得 その2 [VBA]

では、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の中身を解析します。


タグ:VBA
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:

Kingsoft Spreadsheetsで株価取得 その1 [VBA]

さて、前の記事で作成したKingsoft Spreadsheetsのシートに、
株価更新の機能を追加していきます。

需要はなさそうですが、VBA自体はExcelと同じみたいなので、簡単に説明していきます。
※私の使用しているKingsoft SpreadsheetsはVBA版です。
通常のKingsoft SpreadsheetsだとVBAが使えないと思います。ご了承ください。

データの取得元はYahoo!ファイナンスです。

適当な位置にコマンドボタンを作成して
Visual Basicエディターを起動します。

今回はHTMLDocumentを使用しますので、
参照設定からMicrosoft HTML Object Library を選択します。

コマンドボタンのクリックイベントの中にデータ取得のプログラムを書きます。

Private Sub CommandButton1_Click()
    Dim html As MSHTML.HTMLDocument
    Set html = New MSHTML.HTMLDocument
    Dim resHtml As String
            
    Dim document As MSHTML.HTMLDocument
    Set document = html.createDocumentFromUrl("http://info.finance.yahoo.co.jp/history/?code=6753.T&sy=2012&sm=8&sd=8&ey=2012&em=8&ed=9&tm=d", vbNullString)
    
    Do
        DoEvents
        If (document.readyState = "complete") Then
            Exit Do
        End If
    Loop While (True)
       
    resHtml = document.body.innerHTML
End Sub

 

上の例はとりあえずシャープの時系列を取得しています。
resHtmlにシャープの時系列のページが入っていますので、
そこから終値を抜き出す必要があります。

その前に、シャープ固定だと何の役にも立たないので^^;、
次回はシート上のコードからURL文字列を作成したいと思います。


タグ:VBA
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。