2014年2月22日土曜日

Excel VBAで株価(現値)を取得する方法 (from みんなの株式)

最近、Excel VBAを使ってWebから情報を取得する遊びにはまっています。以下は超簡単な株価取得コードです。これをExcel VBAにぺたっと貼って実行すれば、開いているページに全銘柄の株価が入力されます。みんなの株式だと、たった10ページ開くだけで全銘柄が見れるので、かなり簡単なコードで実現出来ました。自由にご利用ください。

 Sub kabu()

    Dim flg As Long
    Dim html As String
    Dim row As Long
  
    Dim a As Object
  
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
  
    Cells.Clear
    Cells(1, 1) = "銘柄コード"
    Cells(1, 2) = "銘柄名"
    Cells(1, 3) = "株価(日時)"
    Cells(1, 4) = "前日比(%)"
    Cells(1, 5) = "株価"
  
    flg = 0
    row = 2
    For i = 1 To 9
      
        'html取得
        html = "http://minkabu.jp/stock/list/" & i
      
        ie.Navigate html
        waitNavigation ie
      
        For Each a In ie.document.body.all.tags("td") '全ての<td>タグを取得する
      
            If a.GetAttribute("class") = "tac wsnw" And flg = 0 Then
                Cells(row, 1) = a.innerText
                flg = 1
            ElseIf flg = 1 Then
                Cells(row, 2) = a.innerText
                flg = 2
            ElseIf flg = 2 Then
                Cells(row, 3) = a.innerText
                flg = 3
            ElseIf flg = 3 Then
                Cells(row, 4) = a.innerText
                flg = 4
            ElseIf flg = 4 Then
                Cells(row, 5).FormulaR1C1 = "=VALUE(SUBSTITUTE(RC[-2],RIGHT(RC[-2],8),""""))"
                flg = 5
            ElseIf flg = 5 Then
                flg = 6
            ElseIf flg = 6 Then
                flg = 0
                row = row + 1
            End If
          
        Next
      
    Next i
    ie.Quit
    MsgBox "完了"
  
End Sub

Sub waitNavigation(ie As Object)
    Do While ie.Busy Or ie.ReadyState < 4
        DoEvents
    Loop
End Sub

初心者の方向けにExcel VBAの使い方を解説しています。興味のある方はこちらをご確認ください。また、ココナラというサイトで、VBAの開発を500円で請け負っています。規模や難易度により受けきれない場合もありますが、お気軽にご相談ください。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。