WEBクエリでヤフーから、時系列で株価を取得するマクロを作っています。
シートAの左に、次々と1銘柄1シートで読み込む場合、下のコードをもっと短くする方法はあるのでしょうか?コードは同じで、銘柄の番号のみ違います。よろしくお願いします。
Sheets("A").Select
Sheets.Add
ActiveSheet.Name = "2002"
With ActiveSheet.QueryTables.Add(Connection:="URL;http://table.yahoo.co.jp/t?s=2002.T&g=d", Destination:=Range("A2"))
.Refresh BackgroundQuery:=False
End With
Range("A1").Select
ActiveCell.FormulaR1C1 = "2002"
Sheets("A").Select
Sheets.Add
ActiveSheet.Name = "2202"
With ActiveSheet.QueryTables.Add(Connection:="URL;http://table.yahoo.co.jp/t?s=2202.T&g=d", Destination:=Range("A2"))
.Refresh BackgroundQuery:=False
End With
Range("A1").Select
ActiveCell.FormulaR1C1 = "2202"
Sheets("A").Select
Sheets.Add
ActiveSheet.Name = "3000"
With ActiveSheet.QueryTables.Add(Connection:="URL;http://table.yahoo.co.jp/t?s=3000.T&g=d", Destination:=Range("A2"))
.Refresh BackgroundQuery:=False
End With
Range("A1").Select
ActiveCell.FormulaR1C1 = "3000"
・
・
・
このような感じで銘柄の番号のみが違うコードが続きます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
余計なお世話かもしれませんが
毎日50日分のデータが必要なんでしょうか?
URLの指定を
http://table.yahoo.co.jp/t?c=年&a=月&b=日&s=銘柄コード
に変更すると指定した日のみのデータが取り出せます
その日だけのデータ取出しであれば
銘柄コード = "2202"
年 = Year(Date)
月 = Month(Date)
日 = Day(Date)
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://table.yahoo.co.jp/t?c=" & 年 & "&a=" & 月 & "&b=" & 日 & "&s=" & 銘柄コード, Destination:=Range("A1"))
.WebFormatting = xlWebFormattingNone
.WebTables = "15"
.Refresh BackgroundQuery:=False
End With
こんな感じで取得可能、ちなみに年月日を指定すると指定日以降の本日までのデータのみ取出しが可能に。
.RefreshStyle = xlOverwriteCells
With内に追加すると読み込んだデータを上書きするので、既存の表に行を一行挿入してマクロ実行すると、最新の日付データを積み重ねて追加していく事もできます。
毎回表をすべてを読み込んで、加工しているのであれば読み出し方法を工夫すると処理が速くなる可能性はあります。
>web2525様
50日分のデータ以外にも指定して取出しできるのですね。他の技も勉強になります。明日にでも本屋に行って基礎レベルをあげようと思いました。
ありがとうございます。
No.1
- 回答日時:
public sub set_chart( sh as worksheet, sec_cd as string )
dim url_chart as string
url_chart = replace("http://table.yahoo.co.jp/t?s=<CD>&g=d", "<CD>", sec_cd )
sh.Name = sec_cd
With sh.QueryTables.Add(Connection:="URL;" & url_chart, Destination:=sh.Range("A2"))
以下略
みたいなサブルーチンを作って、
Call set_chart( "2002.T" )
のように呼び出す。
銘柄コードをシートAに入力しておいて、そのセルを読んでサブルーチンを呼び出すループを書いとけば良いかと。
>osamuy様
回答ありがとうございます。
かなりの初心者なので、サブルーチンの意味が・・。教えていただいたコードとともに、「できる大辞典 EXCEL VBA」で早速調べたいと思います。サブルーチン便利そうです。
感謝です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 祝日を除いた月曜から土曜までの1週間分の日付行を選択し、別シートへカットアンドペーストしたい 13 2023/07/13 22:46
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
宮城県大崎市古川のよく当たる...
-
ヤフーのメールには2種類ありま...
-
ヤフーIDのログイン再設定で本...
-
Yahoo! IDの電話番号なし新規発...
-
gooとOCNの関係をわかりやすく...
-
Safariで、Yahooトップを見ると...
-
Yahoo! Japanのトップページの...
-
インターネット接続で お聞きし...
-
Yahooの「お気に入り」の引継ぎ
-
自分はyahoo 知恵袋と 教えてgo...
-
ヤフートップページのみの表示...
-
ドメインを間違えてメールして...
-
ヤフーやYouTubeの画面にPR広告...
-
秋本奈緒美の旦那さん
-
JAちょきんぎょタイマーの、音...
-
デスクトップ上にアダルトサイ...
-
@yahoo.jp というアドレスは? ...
-
神奈川県で、全国割が使えるサ...
-
ヤフードメインの迷惑メール
-
ヤフーメールが消える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ヤフー知恵遅れ」みたいにこ...
-
Safariで、Yahooトップを見ると...
-
ヤフーのメールには2種類ありま...
-
ヤフーIDのログイン再設定で本...
-
宮城県大崎市古川のよく当たる...
-
Yahoo! Japanのトップページの...
-
Yahoo! IDの電話番号なし新規発...
-
神奈川県で、全国割が使えるサ...
-
ドメインを間違えてメールして...
-
「教えて!Goo」や「YAHOO!知...
-
Yahooの「お気に入り」の引継ぎ
-
ヤフートップページのみの表示...
-
教えてgooで、goodボタンを、ど...
-
「教えてgoo」と「Yahoo!知恵袋...
-
@yahoo.jp というアドレスは? ...
-
偽名でヤフーIDを取得は違法か
-
なぜ日本のヤフーゴミ袋は廃止...
-
JAちょきんぎょタイマーの、音...
-
gooとOCNの関係をわかりやすく...
-
秋本奈緒美の旦那さん
おすすめ情報