ここから本文です

時系列データーの取得方法を教えてください。

ken********さん

2009/10/2419:29:03

時系列データーの取得方法を教えてください。

http://k-db.com/site/default.aspx

上記サイトの時系列をエクセルVBAで取得したいのですが
WEBクエリを使用しマクロ記録をしましてやってみたのですができませんでした。

取得したい方法としましては

画像にありますように
行1をコード 行3を市場区分としており
------------------------------------------------------------------------------
Sheets("Sheet4").Select
Sheets.Add
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://k-db.com/site/jikeiretsu.aspx?c=6752-T", Destination:=Range("A1") _
)
.Name = "jikeiretsu.aspx?c=6753-T"


-----------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
Dim df As Long
df = 10

Sheets("Sheet4").Select
Sheets.Add
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://k-db.com/site/jikeiretsu.aspx?c=" & Cells(df, 1) & "-" & Cells(df, 3) & "", Destination:=Range("A1") _
)
.Name = "jikeiretsu.aspx?c=" & Cells(df, 1) & "-" & Cells(df, 3) & ""
----------------------------------------------------------------------------------------------------

上記の銘柄コード(6752)市場コード(T)を
書き換えてみたのですが

下記URLページには飛ばず

http://k-db.com/site/jikeiretsu.aspx?c=6752-T

下記ページのデーターを取得してしまいます。

http://k-db.com/site/jikeiretsu.aspx

このような場合はどうしたらいいでしょうか?
教えてください。

補足回答ありがとうございます。
説明不足ですいません。
vbaは、標準モジュールに入れてます。

SHEET1

[--A--][- -C--]
[コード] [市場区分]
[6501] [--T--]
[6502] [--T--]


SHEET2
空白

SHEET2に入れて終値のみ取得したいと思っているのですが。

画像のほうはupはしてあるのですが、表示の仕方が分からなくできてませんでした。

閲覧数:
755
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

編集あり2009/10/2501:35:34

このvbaがどこにあるか(どこかのシートのモジュール部なのか標準モジュール部なのか)わからないのですが、標準モジュール部にあるなら
>Sheets.Add
をした後に
>With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://k-db.com/site/jikeiretsu.aspx?c=" & Cells(df, 1) & "-" & Cells(df, 3) & "", Destination:=Range("A1") _
)
>.Name = "jikeiretsu.aspx?c=" & Cells(df, 1) & "-" & Cells(df, 3) & ""
をすると
Cells(df, 1) & "-" & Cells(df, 3)
の部分は追加したシートのセルの値(当然空白)を持ってくると思います。
前後や画像(?)がわからないので、銘柄コード(6752)や市場コード(T)があるシートがわからないのですが、例えばsheet1にある場合は
With ActiveSheet.QueryTables.Add(Connection:="URL;http://k-db.com/site/jikeiretsu.aspx?c=" & Sheets("Sheet1").Cells(df, 1) & "-" & Sheets("Sheet1").Cells(df, 3) & "", Destination:=Range("A1"))
.Name = "jikeiretsu.aspx?c=" & Sheets("Sheet1").Cells(df, 1) & "-" & Sheets("Sheet1").Cells(df, 3)
とすればどうでしょうか?

ちなみに
Destination:=Range("A1")
の部分は.addしたシートのA1なのでそのままでいいと思います。


【 補足への回答 】
こんな感じでしょうか?
最後の終値をSheet1のD列へ取得します。
Sub sample()
Dim qt As QueryTable
Dim r As Long
Sheets("Sheet2").Cells.Clear 'Sheet2クリア
Set qt = Sheets("Sheet2").QueryTables.Add(Connection:="URL;", Destination:=Sheets("Sheet2").Range("A1")) 'Sheet2にクエリテーブル追加
qt.WebSelectionType = xlAllTables '全テーブル読み込み(と言ってもこのページには1個しかないので)
qt.WebFormatting = xlWebFormattingNone '値のみ取得(別にxlWebFormattingAllでもいいけれど)
r = 2 'Sheet1での注目行の初期値
Do While Sheets("Sheet1").Range("A" & r) <> "" 'Sheet1の注目行のA列の値が空白でなければ(A列にデータがあれば)
qt.Connection = "URL;http://k-db.com/site/jikeiretsu.aspx?c=" & Sheets("Sheet1").Range("A" & r) & "-" & Sheets("Sheet1").Range("C" & r) 'URL設定
qt.Refresh BackgroundQuery:=False '更新(更新終了まで待つ)
Sheets("Sheet1").Range("D" & r) = Sheets("Sheet2").Range("E3") '最後の終値をSheet1のD列へ
r = r + 1
Loop
End Sub

標準モジュールではシート指定の無いRange(またはCells)ではシートはActiveSheetになるようです。
それを利用してSheet指定を減らすためにSelectした場合です。
Sub sample()
Dim qt As QueryTable
Dim r As Long
Sheets("Sheet2").Select 'Sheet2選択
Cells.Clear 'Sheet2クリア
Set qt = ActiveSheet.QueryTables.Add(Connection:="URL;", Destination:=Range("A1")) 'ActiveSheet(Sheet2)にクエリテーブル追加
qt.WebSelectionType = xlAllTables '全テーブル読み込み(と言ってもこのページには1個しかないので)
qt.WebFormatting = xlWebFormattingNone '値のみ取得(別にxlWebFormattingAllでもいいけれど)
Sheets("Sheet1").Select 'Sheet1選択
r = 2 'Sheet1での注目行の初期値
Do While Range("A" & r) <> "" 'Sheet1の注目行のA列の値が空白でなければ(A列にデータがあれば)
qt.Connection = "URL;http://k-db.com/site/jikeiretsu.aspx?c=" & Range("A" & r) & "-" & Range("C" & r) 'URL設定
qt.Refresh BackgroundQuery:=False '更新(更新終了まで待つ)
Range("D" & r) = Sheets("Sheet2").Range("E3") '最後の終値をSheet1のD列へ
r = r + 1
Loop
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

pro********さん

2009/10/2518:24:19

株価データが前場・後場に分かれていますが

良いのでしょうか。

時系列データは以下のサイトから取得して

http://table.yahoo.co.jp/t?c=2008&a=7&b=24&f=2009&d=10&e=25&g=d&s=6...

調整後終値から、分割前のデータを修正していくと良いと思います。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる