もしものときの株価自動取得VBAコード(旧低速版)です

-

本記事は株価取得VBAコードの旧記事となっており、
ヤフーファイナンスのHTMLフォーマットが変更になった際、
新VBAコード(高速化・米国株対応・投信対応)が、
正常動作しなくなった場合に備えて、用意してあるものです。

高速化・米国株対応・投信対応のVBAコードは、
下リンクの記事にアクセスして下さい。
エクセルで株価を自動取得するVBAコードを紹介します (米国株・ETF、投信対応版)


インカムゲイン株2

内容としては、エクセルシートに記載してある銘柄コードを元に、
ヤフーファイナンスの株価情報を読み込んで、
そこから最新株価を取得しています。



Sub ボタン1_Click()
 Dim url As String
 Dim cd As String
 Dim sosa_sh As Worksheet
      
 Set sosa_sh = ActiveSheet  ' 現在のシートを退避
 gyo = 8           ' 8行目から株価取得開始
  
  ' コード記載がなくなるまで繰り返す
 Do While sosa_sh.Cells(gyo, 4) <> ""
   ' コード取得してURL設定
  cd = sosa_sh.Cells(gyo, 4)
  url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & cd & ".T"
   ' ヤフーファイナンスの株価情報を読み込み開始
  Workbooks.Open Filename:=url
    
   ' 目印の"詳細情報"の行位置から株価位置を取得
  kabugyo = 1
  Do While ActiveSheet.Cells(kabugyo, 1) <> "詳細情報"
   kabugyo = kabugyo + 1
  Loop
  kabugyo = kabugyo - 1
    
   ' 取引があった時、当日終値を取得
  If ActiveSheet.Cells(kabugyo, 3) <> "---" Then
   sosa_sh.Cells(gyo, 5) = ActiveSheet.Cells(kabugyo, 3)
  Else           ' 取引がなかった時
   ActiveWorkbook.Close  savechanges:=False ' 読み込んだページを一旦閉じる
    
    ' URLを履歴にして、再度読み込み
   url = "http://stocks.finance.yahoo.co.jp/stocks/history/?code=" & cd & ".T"
   Workbooks.Open Filename:=url
    
    ' 目印の"調整後終値*"の行位置から前回株価位置を取得
   kabugyo = 1
   Do While ActiveSheet.Cells(kabugyo, 7) <> "調整後終値*"
    kabugyo = kabugyo + 1
   Loop
   kabugyo = kabugyo + 1
   sosa_sh.Cells(gyo, 5) = ActiveSheet.Cells(kabugyo, 7)
    
  End If
  ActiveWorkbook.Close savechanges:=False  ' 読み込んだページを閉じる
  gyo = gyo + 1      ' 次の行の株価取得へ
 Loop
End Sub


ここでシートに合わせて、カスタマイズする必要があるポイントは3つ。

まずは赤色数値の8という数値です。(1箇所)
これはエクセルシートで、
銘柄コードの記載が始まっている行を設定します。
上のエクセルシートでいうと、
先頭銘柄のブックオフのコード3313が、
シートの8行目から書かれているので8を設定してます。

次に青色数値の4という数値です。(2箇所)
これはエクセルシートで、
銘柄コードの記載が始まっている列を設定します。
列の場合は、A列=1,B列=2,C列=3・・・というように数えます。
上のエクセルシートでいうと、
銘柄コードが書かれているのがD列なので4を設定しています。

最後に水色数値の5という数値です。(2箇所)
これは取得した最新株価を書き込む列を設定します。
A列=1,B列=2,C列=3・・・というように数えますので、
上のエクセルシートでいうと、
最新株価はE列に書き込むので、5を設定しています。

注意1:
 1銘柄更新するのに5~10秒程度かかります。
 数十銘柄持っていて、そんなの待ってられないという方は、
 専用ソフトなど他の方法を探してみて下さい。

注意2:
 銘柄コードが空白になっていることを条件に
 株価取得を終了するようになっています。
 ですので、売却したりして銘柄を削除する場合は、
 空白行にせずに、行削除等で上に詰めるようにしてください。

注意3:
 ヤフーファイナンスのフォーム自体がいつか変わった場合、
 このVBAコードでは使えなくなってしまうかもしれません。
 その時は、新フォームに対応したものを紹介するつもりです。

注意4:
 マクロ釦の作り方や、VBAコード記述のやり方など、
 エクセル操作については、
 書籍・初心者向けサイト等で調べるようにして下さい。

 PERやPBRなどの指標情報を取り込みたい方は、
 コチラの記事も参考にしてみて下さい。
 ヤフーファイナンスから株式のPERやPBRなどの指標情報をエクセルに取り込む