お天気データをWebから取得して、
Excelの表にする方法について考えます。

日々の天気などは都度記録していればいいんですが、なかなかそうも行きません。
困ったときのインターネット。 Web上からデータを取得できたらとりあえず穴は埋まる。
というわけで。

目  次


データの取得先元になるデータを公開しているページ
データの取得方法Excelでデータを取り込む方法
マクロの記録基本となるコードを手に入れましょう
Webアドレスの解析これって呪文!?
生データの編集必要のない部分はばっさりと?
地区データの選択フォームを作ります
サンプルファイルのダウンロード使用条件があります。
更新履歴
目次へ戻る

データの取得先


アメダス 気温抽出

気象庁の過去のデータ検索

Web 過去の天気抽出

Yahoo
WeatherEye
Goo
目次へ戻る

データの取得方法


メニューバーから、データ/外部データの取込/新しいWebクエリ と進みます。(下図)
EXCELメニュー

Webクエリ設定フォーム
Webを参照 を押すと、ブラウザが開くので、アドレス欄に
http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no=15&prec_ch=%8B%F3%92m%8Ex%92%A1&block_no=0041&block_ch=%91%EA%90%EC&year=2009&month=3&day=10&elm=hourly&view=
(ながっ!)を貼り付けてページを表示させて下さい。(北海道-空知地方-滝川市-2009年3月10日 のデータページ)

気象庁のデータ表示ページの一部
ブラウザの方はそのままにして、EXCELに戻ると先ほどのアドレスが表示されていると思いますので、OKを押します。

シート選択
新規ワークシートを選択して、OK。

取込まれた生データ

他にはサイトのHTMLテキストを直接取り込んで、Tableタグで切り分けする方法もあると思います。
目次へ戻る

マクロの記録


メニューバーから、ツール/マクロ/新しいマクロの記録 と進みます。(下図)
マクロの記録メニュー表示

データの取得方法で行った操作を行い、マクロを記録すると、

Sub Macro1()
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no=15&prec_ch=%8B%F3%92m%8Ex%92%A1&block_no=0041&block_ch=%91%EA%90%EC&year=2009&month=3&day=10&elm=hourly&view=" _
        , Destination:=Range("A1"))
        .Name = _
        "hourly_a1.php?prec_no=15&prec_ch=%8B%F3%92m%8Ex%92%A1&block_no=0041&block_ch=%91%EA%90%EC&year=2009&month=3&day=10&elm=hourly&view="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False

        .Refresh BackgroundQuery:=False
    End With
    Range("F3").Select
End Sub

かなり長文ですが(^o^; 赤字の部分は必要ありません。(あらら・・・)
これで基本となるコードが取得できました。
目次へ戻る

Webアドレスの解析


先ほどは簡単にするため
http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no=15&prec_ch=%8B%F3%92m%8Ex%92%A1&block_no=0041&block_ch=%91%EA%90%EC&year=2009&month=3&day=10&elm=hourly&view=
をブラウザのアドレス欄にコピペしてもらいましたが、ちゃんと意味があります。(といっても決めようなんでみんな同じとは行きません)

解析してみます。
http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?
このあたりまでは単なるWebアドレスです。

prec_no=15
これ(15)が空知支庁のコード。
青森県は31、東京都は44、佐賀県が85 等となってます。
全部の県を選択表示させて調べました。(ひまじん!)
prec_ch=%8B%F3%92m%8Ex%92%A1
たぶん「空知支庁」などと書いてあると思いますが、これは空欄でも大丈夫のようですので赤字部分は削除して無視。

block_no=0041
これ(0041)は滝川市。 やっぱり全部調べたよ。(ちょ〜ひまじん!)
block_ch=%91%EA%90%EC
これも空欄でも大丈夫のようですので赤字部分は削除

year=2009&month=3&day=10
これは日付ですね。
elm=hourly&view=
hourlyが1時間毎のデータを表示する ということ。ここは定型で十分。

ということで、
http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no=15&prec_ch=&block_no=0041&block_ch=&year=2007&month=11&day=7&elm=hourly&view=
が生成できればいいのですね。
地区のコード表を作って当てはめていけば作れそうです。
目次へ戻る

生データの編集


生のWebデータ(再掲)
日付は、判っているので、必要なのは温度データだけです。
なので、赤枠部分以外は、ばっさりと行削除・列削除、といきたいのですが、
「観測日時」「気温」と言った文字を頼りに位置決定してデータを抜き出した方が間違いなさそうです。
目次へ戻る

地区データの選択


アメダスの気温観測地点は910ポイントあります。
これは選択するだけでも容易ではありませんが、幸いにも(というか気象庁だって馬鹿じゃないですから、当然)ツリー形式になってます。

まず、北海道、東北、関東・・・・ とブロック分けします。(これは気象庁ではやってなかった!)
その下に、北海道だけ石狩支庁・空知支庁・後志支庁・・・
そのほかは、各都府県名。
さらにその下に主要都市名(観測地点名)がある。

で、フォームを作りました。
こういうものを作らないとなかなか便利にとは行きませんね。
気温データ用
地区選択フォーム(アメダス)
天気データ用
地区選択フォーム(天気)
これは実は同じフォームで、下にWebサイトの選択欄をつけただけ(見れば判るか)

上から順に地区を設定してゆき、日付の設定をします。(Webサイト選択は先にやって下さい。)
「←」はカレンダーフォームの呼び出しボタン。
目次へ戻る

サンプルファイルのダウンロード


※注意
このファイルの利用に当たっていかなる損害がありましても作者は一切の補償を致しません。
各自の責任においてご利用下さい。
また、改善案、バグ報告については随時受け付けておりますので、メールアドレス「MC_ApplicationsYahoo.co.jp」まで、お知らせ下さい。( は@に打ち換えて下さい)

マクロコードは公開しています。 参考にして下さい。
マクロウィルスの混入を防ぐため、不特定多数とのファイル交換はご遠慮下さい。
原本はこのサイトから取得して下さい。

以上ご了承いただける方のみ
ダウンロード(0.00)
ダウンロード(0.10)
ダウンロード(0.11) ダウンロード(0.12)してよろしい。

目次へ戻る

更新履歴


VerNo 更新日  更新内容
0.002009/4/26 リリース
0.102014/7/12 AMeDAS 福島県の地域コード(U307セル)修正(39⇒36)
 AMeDAS オプション搭載 時間間隔、収集データ
 24:00が翌日の0:00になるので表示だけでも保持する設定を追加
(日付形式ではなく文字列形式になるので、データの再利用には注意が必要)
0.112015/05/18いつの間にかGooの地域コード 増えたりはいいんだけど、変わったり。 
同じ番号に別の地域当てんなよ〜〜 で修正しました。
0.122016/04/07Goo模様替え。またお前か〜〜
   
目次へ戻る