エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロVBA「Web連携」
       └ エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例

エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例

[4652] 2015-07-04 21:35:04 受講生さんからの投稿です。

小川さん

こんばんは。
YAHOOのトップページより「天気・災害トップ」の時間毎の天気・気温・湿度・降水量・風向・風速を
取得したいと考えております。
その途中で下記コード「「天気」の摘要・アドレスを抽出」の部分をうまく取得できない状況です。
どの部分に誤りがあるか教えていただけますか。
お手数をおかけしますが、よろしくお願いいたします。

 
Sub main()
'〇ライブラリの参照設定
'Microsoft XML, v3.0 かそれ以上のバージョン -> XML解析のため
'Microsoft HTML Object Library -> HTMLコンテンツの取得と、DOM解析のため

    'YAHOO!_JAPAN_画面へアクセス。
        Dim xh As New MSXML2.XMLHTTP
        Dim pElem As MSHTML.HTMLParaElement
        Dim hDoc As New MSHTML.HTMLDocument
        Dim e As MSHTML.HTMLHtmlElement
        
        xh.Open "GET", "http://www.yahoo.co.jp/"; & "?time=" & Format(Now, "yymmddhhnnss")
        xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        xh.send
        
        Do Until xh.readyState = 4
            DoEvents
            Debug.Print xh.readyState
        Loop
        
        If xh.Status <> 200 Then
            MsgBox "リクエストに失敗しました" & vbNewLine & xh.Status & ":" & xh.StatusText
        End If
    
    'レスポンスヘッダーをすべて出力
        'Debug.Print xh.GetAllResponseHeaders
    'レスポンスボディーを解析
        'Debug.Print xh.responseText 'htmlページをすべて出力してみよう
    '(YAHOO!_JAPANトップページの)「天気」のアドレスを抽出
        For Each pElem In hDoc.getElementsByClassName("cbysC13")
            Debug.Print pElem.href
        Next
    '(YAHOO!_JAPANトップページの)「天気」をクリック。
    '「176-0000」(東京都練馬区)を入力し、「検索」をクリック。
    '「市町村名」をクリック。
    '「時間」毎の天気・気温・湿度・降水量・風向・風速を抽出。

End Sub

 


[4657] 2015-07-06 20:56:57 小川慶一さんからの投稿です。

受講生 さん:

トップページだと、Cookieの値によってどこの気象情報を取ってくるかが変わりそうですね。

ついては、以下の類のページから取得すれば?とも。
神奈川県東部
http://weather.yahoo.co.jp/weather/jp/14/4610.html

横浜市港北区
http://weather.yahoo.co.jp/weather/jp/14/4610/14109.html



>小川さん
>
>こんばんは。
>YAHOOのトップページより「天気・災害トップ」の時間毎の天気・気温・湿度・降水量・風向・風速を
>取得したいと考えております。
>その途中で下記コード「「天気」の摘要・アドレスを抽出」の部分をうまく取得できない状況です。
>どの部分に誤りがあるか教えていただけますか。
>お手数をおかけしますが、よろしくお願いいたします。
>
>
 
>Sub main()
>'〇ライブラリの参照設定
>'Microsoft XML, v3.0 かそれ以上のバージョン -> XML解析のため
>'Microsoft HTML Object Library -> HTMLコンテンツの取得と、DOM解析のため
>
>    'YAHOO!_JAPAN_画面へアクセス。
>        Dim xh As New MSXML2.XMLHTTP
>        Dim pElem As MSHTML.HTMLParaElement
>        Dim hDoc As New MSHTML.HTMLDocument
>        Dim e As MSHTML.HTMLHtmlElement
>        
>        xh.Open "GET", "http://www.yahoo.co.jp/"; & "?time=" & Format(Now, "yymmddhhnnss")
>        xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
>        xh.send
>        
>        Do Until xh.readyState = 4
>            DoEvents
>            Debug.Print xh.readyState
>        Loop
>        
>        If xh.Status <> 200 Then
>            MsgBox "リクエストに失敗しました" & vbNewLine & xh.Status & ":" & xh.StatusText
>        End If
>    
>    'レスポンスヘッダーをすべて出力
>        'Debug.Print xh.GetAllResponseHeaders
>    'レスポンスボディーを解析
>        'Debug.Print xh.responseText 'htmlページをすべて出力してみよう
>    '(YAHOO!_JAPANトップページの)「天気」のアドレスを抽出
>        For Each pElem In hDoc.getElementsByClassName("cbysC13")
>            Debug.Print pElem.href
>        Next
>    '(YAHOO!_JAPANトップページの)「天気」をクリック。
>    '「176-0000」(東京都練馬区)を入力し、「検索」をクリック。
>    '「市町村名」をクリック。
>    '「時間」毎の天気・気温・湿度・降水量・風向・風速を抽出。
>
>End Sub
>

 


[4660] 2015-07-06 21:35:22 受講生さんからの投稿です。

小川慶一 さん:

わかりました、いろいろ試してみます。
ご回答いただきありがとうございました。

>受講生 さん:
>
>トップページだと、Cookieの値によってどこの気象情報を取ってくるかが変わりそうですね。
>
>ついては、以下の類のページから取得すれば?とも。
>神奈川県東部
>http://weather.yahoo.co.jp/weather/jp/14/4610.html
>
>横浜市港北区
>http://weather.yahoo.co.jp/weather/jp/14/4610/14109.html
>
>
>
>>小川さん
>>
>>こんばんは。
>>YAHOOのトップページより「天気・災害トップ」の時間毎の天気・気温・湿度・降水量・風向・風速を
>>取得したいと考えております。
>>その途中で下記コード「「天気」の摘要・アドレスを抽出」の部分をうまく取得できない状況です。
>>どの部分に誤りがあるか教えていただけますか。
>>お手数をおかけしますが、よろしくお願いいたします。
>>
>>
 
>>Sub main()
>>'〇ライブラリの参照設定
>>'Microsoft XML, v3.0 かそれ以上のバージョン -> XML解析のため
>>'Microsoft HTML Object Library -> HTMLコンテンツの取得と、DOM解析のため
>>
>>    'YAHOO!_JAPAN_画面へアクセス。
>>        Dim xh As New MSXML2.XMLHTTP
>>        Dim pElem As MSHTML.HTMLParaElement
>>        Dim hDoc As New MSHTML.HTMLDocument
>>        Dim e As MSHTML.HTMLHtmlElement
>>        
>>        xh.Open "GET", "http://www.yahoo.co.jp/"; & "?time=" & Format(Now, "yymmddhhnnss")
>>        xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
>>        xh.send
>>        
>>        Do Until xh.readyState = 4
>>            DoEvents
>>            Debug.Print xh.readyState
>>        Loop
>>        
>>        If xh.Status <> 200 Then
>>            MsgBox "リクエストに失敗しました" & vbNewLine & xh.Status & ":" & xh.StatusText
>>        End If
>>    
>>    'レスポンスヘッダーをすべて出力
>>        'Debug.Print xh.GetAllResponseHeaders
>>    'レスポンスボディーを解析
>>        'Debug.Print xh.responseText 'htmlページをすべて出力してみよう
>>    '(YAHOO!_JAPANトップページの)「天気」のアドレスを抽出
>>        For Each pElem In hDoc.getElementsByClassName("cbysC13")
>>            Debug.Print pElem.href
>>        Next
>>    '(YAHOO!_JAPANトップページの)「天気」をクリック。
>>    '「176-0000」(東京都練馬区)を入力し、「検索」をクリック。
>>    '「市町村名」をクリック。
>>    '「時間」毎の天気・気温・湿度・降水量・風向・風速を抽出。
>>
>>End Sub
>>

>

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ