|
こんにちは。かみちゃん です。
>YAHOOファイナンス→株・投資→例:コード6301→時系列の表を現在、エクセルに
>いったん取り込んでから、A1を選択させて貼り付けまして、A1が”日付”なら
>ば、情報取得成功それ以外なら取得失敗と判断せています。
>これでも目的の結果は得られるのですが、回数が多くなると、張り付けという動
>作が処理速度を低下させてしまします。
>今回、お聞きしたい事なのですが、WEB上の表の特定の場所をエクセルに貼り付け>ずにWEB上で参照して条件判断する事は可能でしょうか?
Yahoo!ファイナンスからのデータ取得は、私もしているのですが、
WebQueryを使わずにInternetExplorer(IE)との連携による処理にすると、
シート上に展開する必要はなく、判断できます。
Sub Sample()
Dim myIE As Object
Dim myURL As String
Dim lngPos As Long
Const strFindString As String = "日付始値高値安値終値出来高調整後終値*"
Set myIE = CreateObject("InternetExplorer.application")
'次の行のxxxxは、httpを半角にしたものにしてください。
myURL = "xxxx://table.yahoo.co.jp/t?s=6301.t&g=d"
myIE.Navigate2 myURL
'表示終了まで待つ
Do While myIE.Busy = True
DoEvents '特に何もしないで.Busyの状態が変わるまで待つ
Loop
Do While myIE.ReadyState <> 4
DoEvents '特に何もしないで.ReadyStateの状態が4に変わるまで待つ
Loop
strWebTextData = myIE.Document.body.innerText
lngPos = InStr(strWebTextData, strFindString)
If lngPos > 0 Then
strWebTextData = Mid(strWebTextData, lngPos + Len(strFindString) + 2)
lngPos = InStr(strWebTextData, "日")
strWebTextData = Mid(strWebTextData, 1, lngPos)
If IsDate(strWebTextData) Then
MsgBox "時系列データの情報取得に成功しました" & vbCrLf & _
strWebTextData
Else
MsgBox "時系列データの情報取得に失敗しました" & vbCrLf & _
strWebTextData
End If
Else
MsgBox "時系列データは取得できません"
End If
End Sub
IE連携については、以下のURLあたりも参考にしてみてください。
http://www.ken3.org/cgi-bin/group/vba_ie.asp
|
|