「Excel VBA」 Webクエリ マクロ「実行時エラー"1004"」一時ファイル容量が少なすぎで、IE7で実行不可能。どなたか解決策を!http://okwave.jp/qa2884378.html
こちらで質問されていますが、そんなレベルでは無理な状況です。
同じように、株価取得時にエラーが出ます。
1行に1銘柄の過去50日分の株価を取得しています。
最低でも100~200行。できれば400行以上取得したいのですが、
IE7では、一時ファイル容量が1024MBに制限されているために、10~20行ぐらいで、容量オーバーで、「実行時エラー\"1004\"」で止まります。
xpでIE6では問題ありません。一時ファイル容量として4GBぐらい使っていると思います。
そろそろ、xpもきつくなってきたので、win7を見越して、そろそろvistaに乗り替えたいので、どうしてもIE7の壁を超えたいのです。
どなたか、ご教授を!
No.5ベストアンサー
- 回答日時:
思い出しました。
qa4107528.htmlこの頃からの課題が解決してないのですね...
放置は好きではないですが、参考までに動くサンプルの提示をしておきます。
Option Explicit
Sub try_2()
'"日付 始値 高値 安値 終値 出来高 調整後終値*" '列項目名
Const CX As Long = 7 '配列の列数(項目数)
Const PTN = ">([^<>\n]+)<" 'データ抜き出しパターン
Const CHK = "<small>調整後終値*</small></th>" 'テーブル判断項目htmlTEXT
Dim ws As Worksheet
Dim xh As Object 'MSXML2.ServerXMLHTTP
Dim re As Object 'VBScript.RegExp
Dim mc As Object 'RegExp.Match
Dim url As String 'URLアドレス
Dim ret As String 'XMLHTTP.responsetext
Dim n As Long 'chk文字存在判定
Dim x As Long 'HTML項目Loop用
Dim cnt As Long 'データCOUNT
Dim i As Long
Dim j As Long
Dim k As Long
Dim rx As Long
Dim v, cd 'データ格納用配列,Loopコード用配列
Dim t As Single
t = Timer
On Error Resume Next
Set xh = CreateObject("MSXML2.ServerXMLHTTP")
On Error GoTo 0
If xh Is Nothing Then Exit Sub
Set ws = Sheets.Add 'ActiveSheet
'ws.UsedRange.Clear
ws.Range("A2:A5").Value = [{1301;1332;1334;1376}] 'サンプル
'A2から下に連続で銘柄コードが配置されている場合。
cd = ws.Range("A2", ws.Cells(ws.Rows.Count, 1).End(xlUp)).Value
rx = UBound(cd)
ReDim v(0 To rx, 1 To 200)
For i = 1 To 200 Step 4
v(0, i + 0) = "日付"
v(0, i + 1) = "高値"
v(0, i + 2) = "安値"
v(0, i + 3) = "終値"
Next
Set re = CreateObject("VBScript.RegExp")
re.Pattern = PTN
re.Global = True
'CD Loop
For i = 1 To rx
cnt = 0
x = 0
url = "http://table.yahoo.co.jp/t?g=d&s=" & cd(i, 1)
xh.Open "GET", url, False
xh.Send
If (xh.Status >= 200) And (xh.Status < 300) Then
ret = xh.responsetext
n = InStr(ret, CHK)
If n > 0 Then
ret = Mid$(ret, n + Len(CHK))
Set mc = re.Execute(ret)
For j = 1 To 50
For k = 1 To CX
Select Case k
Case 1, 3, 4, 5
cnt = cnt + 1
v(i, cnt) = mc(x).submatches(0)
If k = 1 Then
If Not IsDate(v(i, cnt)) Then
j = 50
Exit For
End If
End If
End Select
x = x + 1
Next k
Next j
End If
End If
Next i
ws.Range("B1").Resize(rx + 1, 200).Value = v
Set mc = Nothing
Set re = Nothing
Set xh = Nothing
Set ws = Nothing
Debug.Print Timer - t '500件だと約70sec
End Sub
#[win2000/xl2000/ie6][vista/xl2007/ie7]検証済み。
そうなんです。その後IE6で頑張っていたんですが。。
これは速いです!
私も、検証できました。
これで、この手の問題で悩んでいる方々も解決できますね!
有難う御座いました!
No.4
- 回答日時:
Internet Explorer 7 では、Webクエリの連続実行は不具合が発生します。
セキュリティホール対策の為だそうです。
http://www2s.biglobe.ne.jp/~iryo/kabu/info/QA/qi …
(6.Yahooファイナンス取得不安定)
ですのでXMLHTTP オブジェクトを使う方法に変更されてはどうでしょう。高速に取得できます。
(MSXML2.XMLHTTP もしくは MSXML2.ServerXMLHTTP)
http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
参考QNo./qa4201932.html(サンプルコードは現在ソースが変更になっているため修正が必要)
この回答への補足
セキュリティホール対策の為ですか。。。
IE8ベータも一時ファイルは、制限されているようなので、正規版では期待できないようですね。
先の回答に、更なるお礼はつけられないのでこちらに書きます。
その後、色々勉強した結果、配列を使っているところが鮮やかでした。
データ量が多くなってくると、この方法がいいですね。
No.3
- 回答日時:
>そろそろ、xpもきつくなってきたので
何がどうきつくなって来たのでしょうか?同じスペックならVistaSP1よりXPSP3の方が軽くて早いですし、MSが既に繋ぎだったVistaを見限っていますし、サポートライフサイクルもXPは2014年まで、VistaHomeは2012年まで。なにより、
>win7を見越して、そろそろvistaに乗り替えたい
win7を見越して…であれば余計にwin7までXP使ってた方が良いんじゃないんですか?おそらくIE8以上が標準搭載でしょうが。
そもそも実行エラー1004は色々な原因で出ますが、一時ファイルの容量に起因しているのでしょうか?一時ファイルは再表示の高速化であって、ダウンロードのプレースフォルダではありませんよ?メモリ、仮想メモリやアドインの問題、マクロの編集等はお考えになられないので?
No.2
- 回答日時:
1行に1銘柄、50日分の株価を取得し400銘柄の株価を取得するということは銘柄ごとの4本足でなく現在値(終値)の取得ということですか、これだと銘柄数*50日分の株価を常時読み込む必要があるので大きなメモリーを使います。
普通はこのようなとり方をしないと思いますが、人それぞれなのでなんとも言えませんが.....一列に一銘柄(昇順か、降順で)ならば必要なセルは一行だけで済みます。
Excel2007なら256の壁を超えているので銘柄数も多く取れると思いますが、この手のマクロは重くなるのでVistaよりXPのほうが快適に動いておりますが、参考になれば幸いです。
この回答への補足
銘柄毎に高値安値終値の3本をとっています。
なので、かなりメモリーを消費しています。
マクロは圧倒的にExcel2007のほうが早いですし、メモリも3G以上動作させたいので、vista64bit上で使いたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「20分ディレイ」になっている...
-
なぜ飲食店の株はPERに比べて割...
-
就職先の株式保有について。
-
任天堂株が25000くらいのときに...
-
日足チャートの上昇の陰線について
-
6000番台の仕手株
-
過去数日~数ヶ月間の、株価や...
-
PBRがマイナスになっている企業...
-
会社四季報の保存期間
-
売気配株数と買気配枚数の関係...
-
静岡鉄道グループの株は買えるの?
-
個別銘柄の過去の株価を知りたい
-
下落率の計算方法を教えてくだ...
-
「蓋」とは?
-
株価の時価総額の単位 T Bっ...
-
アルパインCBって・・・
-
30年以上前の株価を調べられる...
-
各銘柄ごとに掲示板のあるサイト
-
小僧寿しって持ち帰りの寿司や...
-
買っている会社が吸収合併させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
任天堂株が25000くらいのときに...
-
「20分ディレイ」になっている...
-
なぜ飲食店の株はPERに比べて割...
-
小僧寿しって持ち帰りの寿司や...
-
就職先の株式保有について。
-
下落率の計算方法を教えてくだ...
-
静岡鉄道グループの株は買えるの?
-
30年以上前の株価を調べられる...
-
株価の時価総額の単位 T Bっ...
-
PBRがマイナスになっている企業...
-
株式の板の数字の頭にあるSマーク
-
「蓋」とは?
-
日本経済新聞と言うのは株価に...
-
よろしくお願いします。 株につ...
-
リアルタイム株価をディスクト...
-
ピクセラ(6731)について 2017...
-
会社四季報の保存期間
-
大株主が一部売却する理由
-
終値の月平均株価がわかるホー...
-
ドイツ人の学位Ir.とはどういう...
おすすめ情報