VBAマクロで複数月に渡る過去の天気の取得方法 削除
Message#1 2015年1月22日(木)22時53分 From: Dell |
現在、各サイトを参考にしながら、下記のコードで一ヶ月分は取得できていますが、複数月を取得する場合、どのようにすればいいでしょうか。 たとえば2014年12月1日〜2015年1月17日の期間 Excel2013を使用していますが、外部データの取り込みではエラーが出るため、使用していません。 Sub Main() Application.ScreenUpdating = False '画面更新禁止 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") 'IEを開いて非表示 objIE.Visible = False yy = Range("a1").Value mo = Range("B1").Value da = Range("C1").Value '指定URLへ移動する objIE.Navigate "http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=74&block_no=47893&year=" & yy & "&month=" & mo & "&day=" & da & "&view=" '表示完了を待つ .readyState と .Busy を見る While objIE.readyState <> 4 Or objIE.Busy = True 'IEがBusyの間 待つ DoEvents Wend DoEvents '表示待ちここまで 'Tableタグを抜き出す Dim objT As Object 'テーブルオブジェクトの格納用 Set objT = objIE.document.all("tablefix1") '.all("id名前")でテーブルタグを抜く If objT Is Nothing Then '↑上で見つかったか? MsgBox "err 表が見つかりません、 IDを確認してください。" Exit Sub 'エラーなので抜ける。 End If Dim x As Integer '列の管理 Dim y As Integer '行の管理 'Worksheets(3).Select 'Webの表をシートへ転記(代入する) For y = 0 To objT.Rows.Length - 1 '行のループ For x = 0 To objT.Rows(y).Cells.Length - 1 '列数分ループ Worksheets(3).Cells(y + 2, x + 1) = objT.Rows(y).Cells(x).innertext '↑y+1 1行目から書き出す、11行目にするには y+1+10に変更する Next Next 'objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択 'objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー 'Range("A1").Select 'ActiveSheet.PasteSpecial Format:="HTML" 'HTML形式で貼り付ける objIE.Quit '.QuitでIEを閉じる '使用したオブジェクト変数を空に。 Set objT = Nothing Set objIE = Nothing Worksheets(2).Select Application.ScreenUpdating = True '画面更新 End Sub |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。