- 締切済み
VBAでデータ更新が遅い
こんにちは。 たびたびお世話になってます。 今、VBAでYahooファイナンスのサイトからWebクエリでシートに株価データを落として 手元にある、株価の入ったcsvファイルを更新する(新しいデータがあれば更新)マクロを 書いてるんですが、マクロ実行当初はまぁまぁの速さなのですが、株価データは大量に あるため、3000銘柄くらいダウンロードすると、段々と速度が落ちてしまいます。 速度が落ちない良い方法はないでしょうか。 csvはエクセルでオープンしてます。Open文でcsvをテキストとして開いた方が 良いんでしょうか。。とりあえず、Webクエリの部分だけですが、ご教示お願いします。 Sub WebStockGet(ByVal httpUrl As String, ByRef testWs As Worksheet) With testWs.QueryTables.Add(Connection:=httpUrl, Destination:=testWs.Range("A1")) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlAllTables .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With End Sub -- エクセル2003
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- web2525
- ベストアンサー率42% (1219/2850)
このマクロはマクロの記録で[WEBクエリー]の動作を記録した物かと思いますが、基本的には余分なプオプション設定は必要ありません 参考URL http://www.d3.dion.ne.jp/~jkondou/excelvba/T1.htm 不必要なオプションは全てカットするとすっきりします。 すっきりした所で本題に入りますが 読み込むテーブルのURL情報が Connection:=httpUrl となっているが実際に動作する場合は何処のデーターを読み込んでいますか? オプションの中身を見ると読み込みするテーブルの選択が無いので .WebTables = WEBページ全体を一つのテーブルとして読み込んでいるようですが、不必要なデーターが一緒に付いてきていませんか? Yahooファイナンスの株価データと言うと http://stocks.finance.yahoo.co.jp/stocks/detail/?code=4689.t このページか http://stocks.finance.yahoo.co.jp/stocks/history/?code=4689.T このページだと思いますが(共にYahooの株価) ページ全体を一つのテーブルとして読み込み必要な情報だけ抜き出して整理する手法だと、クエリーのマクロ云々ではなくその後の処理内容の方を重視しないと実行速度の解決にはなりません Yahooファイナンスでの株価情報は http://table.yahoo.co.jp/t?s=4689.T&g=d こちらのページからだと、必要な情報の日付を指定して株価データーを呼び出せます URL指定をこんな形式にすると http://table.yahoo.co.jp/t?c=2011&a=4&b=13&f=2011&d=4&e=13&g=d&s=4689.t&y=0&z=4689.t&x=sb 2011/4/13のデーターのみ取得することも可能で.WebTables =のオプションで必要なテーブルだけの抜き出しも可能です、その他のオプションの設定によっては過去のデーターに追加する形で付け加えることが可能なので、読み込み後のデーターの整理処理が必要なくなり、全体的な速度向上に繋がると思います。 必要とするのが終値でなく、リアルタイムの価格データーであれば http://d.hatena.ne.jp/ken3memo/20090820/1250755545 こちらが参考になると思います YouTubeでの詳しい解説もあるのでわかり易いと思います