[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『過去の天気の取り込み』(まさし)
たとえば
http://weather.yahoo.co.jp/weather/jp/past/28/6310.html?c=2008&m=1
このような頁の天気(WEB上では晴れや曇りの記号ですが、文字として
取り出したい)や最高気温、最低気温を自動的に
シートに取り込むのはどうすれば、いいのでしょうか?
外部データの取り込み、WEBクエリですればいいのはわかるのですが、
具体的な操作方法がわかりません。
誰か、教えて下さい。
新規ブックの標準モジュールに
'===============================================================
Sub main()
On Error Resume Next Dim ans As Variant Dim ie As Object Dim tbl As Object Dim rw As Object Dim cll As Object Dim idx As Long Dim g0 As Long, g1 As Long Application.ScreenUpdating = False Set ie = CreateObject("InternetExplorer.Application") With ie .Visible = False idx = 1 .navigate "http://weather.yahoo.co.jp/weather/jp/past/28/6310.html?c=2008&m=1 "
Do While .Busy = True Or .readyState <> 4 Loop For Each tbl In .document.body.all If TypeName(tbl) = "HTMLTable" Then Err.Clear For Each rw In tbl.Rows g1 = 0 For Each cll In rw.Cells With Cells(g0 + 1, g1 + 1) .Value = Replace(cll.innertext, vbCr, "") idx = InStr(cll.innerHTML, "IMG alt=") If idx > 0 Then ans = Split(Replace(cll.innertext, vbCr, ""), vbLf) ans(1) = Mid(cll.innerHTML, InStr(cll.innerHTML, "IMG alt=") + Len("IMG alt="), 1) .Value = Join(ans, vbLf) End If End With g1 = g1 + 1 Next g0 = g0 + 1 Next End If Next g0 = g0 + 1 .Quit End With ' Range(Columns(1), Columns(2)).AutoFit Set tbl = Nothing Set ie = Nothing Set rw = Nothing Set cll = Nothing Erase ans Application.ScreenUpdating = True End Sub
として、適当なシートをアクティブにしてmainを実行してみてください。
取り合えず、表の形式の天気は取得できます。
が・・・。
他の質問サイトのでも同じような質問がたまにあります。
遊びとして作る分には良いのでしょう(私はお遊びでしかこの手のコードは作りません)が、
他人が作ったサイトに対して、
細かい加工を施してデータを取得するコードなんて、非常にメンテナンスが大変ですよ!!
相手サイトの構造がちょっと変われば、たちまち動作しなくなります。
その辺りの事情も考慮してお使いください
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.