VBA WEB株価取得
仕様
windows7
EXCEL2007
@ニフティで3300銘柄の株価を取得していたのですが、急に取得できなくなりました。
@ニフティ http://stocks.nifty.com/cgi-bin/quote/q?c=1301&h=3m
今までのコード
UrlWeb = URL & code(i + 1, 1) & "&h=3m"
With Xhtp
.Open "GET", UrlWeb, False
.send
With objstm
.Open
.Type = adTypeBinary
.write Xhtp.responsebody
.Position = 0
.Type = adTypeText
.Charset = "EUC-JP"
dthtml = objstm.readText()
.Close
Mystr1 = InStr(dthtml, "日付")
Mystr2 = InStr(Mystr1, dthtml, "表示期間")
dthtml = Mid$(dthtml, Mystr1, Mystr2 - Mystr1)
With Reg
.Global = True
.Pattern = " "
dthtml = .Replace(dthtml, "")
.Pattern = "<tr bgcolor=""#FFFFFF"">"
dthtml = .Replace(dthtml, "")
.Pattern = ">([^\S]*)<"
dthtml = .Replace(dthtml, "")
.Pattern = ">([^<>]*)<"
dat = .Execute(dthtml).Count
ReDim dat1(dat)
With .Execute(dthtml)
For j = 1 To dat - 1
dat1(j) = .Item(j).SubMatches(0)
Next j
End With
End With
End With
End With
今まではこれで問題なく取得できてました。
しかし、エラーが2種類出るようになりました。
1.出たり出なかったりの2147483638 (8000000a)この操作を完了するのに必要なデータは、まだ利用できません。
以前は一銘柄平均400ミリ秒ぐらいでした。最大650最少200ぐらい。(画像参照(1))
2-1.インデックスエラー(画像参照(2))
htmlのソースと異なった値を取得している。たぶん、3つ上の値を取得しているのだと思いますが。
実際は前日始値を当日出来高、前日高値を当日前日比率を取得しています。
こちらは、今のところ銘柄コード1308で出ます。その他は検証出来てません。
2-2.2-1を無視してマクロを続行させても
通常、配列数が406が正常に取得できる値なのですが
日付・終値・・などの項目名だけを取得し配列数が6になりエラーが出ることもあります。
(画像参照。dat1(1~6)の部分のみ取得で配列数が6になります)
このエラーに関してはYAHOO時系列&(http://japan.marketnewsline.com/market/historical-prices/8890.html)でも出ます。
上記2-2は出たり出なかったりします。再起動してマクロを実行しても
同じ銘柄ではなく、ランダムにエラーが出ます。
なんとか修正したいのですが、どうしたらいいか分かりません。
解決策を教えて下さい。
補足
何度も質問して申し訳ないのですが、prototype.jsをダウンロードして同じフォルダに入れる必要はありますか?