インターネットの情報を活用する(最新気象情報取得)
気象庁のHPで最新アメダス情報を表示するページがあります。
このデータをExcelに取り込んで見ましょう。

下のURLの中の赤字の部分が地点コードで、ここを替えるといろいろな地点の情報を得ることができます。
http://www.jma.go.jp/jp/amedas_h/today-11016.html?areaCode=000&groupCode=10

今回は全道のデータを一括して取得します。
横方向には今日の1時から24時までのデータを入れていきます。
早速デザインモードにして「データ読込」ボタンをダブルクリックして、ソースを見てみましょう。

ソースは意外とシンプルです。赤色の部分で地点コードを替えています。
For I = 4 To 157
strURL = "http://www.jma.go.jp/jp/amedas_h/today-" & Range("A" & I) & ".html?areaCode=000&groupCode=10"
InDt = getjson(strURL) ' HTMLデータをダウンロードするgetjson()はHTMLソースを取得するプロシージャーで、標準モジュールに入っています。
URLを渡すとHTMLのコードが帰ってきます。
javascripによってデータを読み込せていますが、この部分はカットアンドへーストで使ってください。
APIを使っ使う場合はこちらになる。こちらの方が早く、制限が少ない。(暗号化レベルが深くてもダウンロード可能)

こちらはバイナリデータのダウンロードもあり、出力はファイである。インポート用のnetデータ取得.basを使う。
サンプルソフト「インターネットからのタイル地図のダウンロード(ランタイム不要バージョン)」を参照
これらを使うには参照設定で「Microsoft Script Contorol 1.0」を追加する必要があります。

HTMLコードは下記のようになっています。このコードから規則性を探して、特定のデータを抜き出します。

「St = InStr(InDt, ">時刻</td>") 」をで大まかなデータ開始位置を求めます。
InStr 関数は、指定した文字列 を検索し、最初に見つかった文字位置をかえします。

アメダスデータは、地点によってデータの取得項目が違うため、「CxDt(0) = "気温": CxDt(1) = "降水量"・・・・: CxDt(7) = "気大」を使ってデータ項目を確認します。
それが下記のルーチンです。
For J = 0 To 7 '観測項目を確認
Skip(J) = 0
If InStr(St, InDt, CxDt(J)) > 0 Then
Cx(J) = 1 'データの有無(使っていない)
CxN = CxN + 1 '有効データ数
Else
Cx(J) = 0 'データの有無(使っていない)
Skip(CxN) = Skip(CxN) + 1 'データがないセルのスキップ数
End If
Next J次に各時間のデータ開始位置を検索します。時間データは「<td class="time left">1</td>」のように入っています。
「time left">1</td>」を検索するには、「"」を含むため文字列指定との見分けが付きません。このため、「"」はChr(&H22)で表します。
Hst = InStr(St, InDt, "time left" & Chr(&H22) & ">" & H & "</td>")

データは「middle">2.7</td>」赤字で示した中にあるため、
dtL(0) = InStr(Hst, InDt, "middle" & Chr(&H22) & ">") 'データ開始位置
dtL(1) = InStr(dtL(0), InDt, "</td>") 'データ終了位置上記式で位置を割り出し、Mid関数を使ってデータを取り出します。
Dt = Mid(InDt, dtL(0) + 8, dtL(1) - (dtL(0) + 8)) 'データだけを取り出す
取り出したデータは先ほどのデータスキップ数などを用いて、セルに保存していきます。
Cells(I, (H - 1) * 8 + 3 + N + Skip(N)) = Dt 'セルへデータ書き込み
自動出力するHPは、規則性があるので自動取得しやすくなっています。