楽天証券のRSSを使ってExcelでこんな感じに東証一部全銘柄の当日の株価データを取得しようとしたんだけど
途中からデータが表示されなくなるんだよ。
調べたら同時に登録できるのは300銘柄までっていう制限があるんだね。
300銘柄の制限を突破するにはどうしたらいいのか調べたら
・Excelのbookを300銘柄以内で複数に分ける。
・300銘柄取得して別の場所にコピーする。これをタイマーで繰り返し起動する。
という方法を見つけたからやってみたらうまくいったよ。
最終的には300銘柄以内で処理を繰り返す方法にしたけどね。
Sub 株価取得()
Dim code As String
Dim GYO As Long, GYOs As Long, GYOend As Long
Dim n As Long
Dim r As Range
Const Nend As Long = 150 '一度に処理する銘柄数 300以下にする
GYOend = Cells(2, 1).End(xlDown).Row '最終行
Range(Cells(2, 2), Cells(GYOend, 6)).ClearContents
GYO = 2 '開始行
Do
GYOs = GYO
For n = 1 To Nend
code = Cells(GYO, 1)
Cells(GYO, 2) = "=RSS|'" & code & ".T'!始値"
Cells(GYO, 3) = "=RSS|'" & code & ".T'!高値"
Cells(GYO, 4) = "=RSS|'" & code & ".T'!安値"
Cells(GYO, 5) = "=RSS|'" & code & ".T'!現在値"
Cells(GYO, 6) = "=RSS|'" & code & ".T'!出来高"
DoEvents
GYO = GYO + 1
If GYO > GYOend Then Exit For '最終行なら途中で抜ける
Next n
Cells(GYO, 5).Select '処理の途中が確認できるように次の行を選択
Do
n = 0
For Each r In Range(Cells(GYOs, 2), Cells(GYO - 1, 6))
If IsError(r) Then n = n + 1
DoEvents
Next
Loop Until n = 0 '#N/Aが消えるまで待つ
Range(Cells(GYOs, 2), Cells(GYO - 1, 6)).Value = Range(Cells(GYOs, 2), Cells(GYO - 1, 6)).Value '数式を値に置き換える
Loop Until GYO > GYOend '最終行まで繰り返す
End Sub