郵便番号データベースと突合するよりもさらに便利なのが「郵便番号API」を使う方法です。
Excel VBAからWeb APIを呼び出すことで、常に最新の郵便番号データを参照し、住所を自動取得できます。
郵便番号APIを使った住所取得の流れ
- APIサービスを利用
- 無料で使える代表例は「zipcloud API」
- URL形式:
https://zipcloud.ibsnet.co.jp/api/search?zipcode=郵便番号
VB例:https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000001
- VBAでAPIを呼び出す
MSXML2.XMLHTTPを使ってHTTPリクエストを送信- 返ってくるJSONを解析して住所を取得
サンプルコード(郵便番号から住所を取得)
Option Explicit
Function GetAddress(zipcode As String) As String
Dim apiUrl As String
Dim xmlhttp As Object
Dim json As Object
Dim result As Object
' APIのURLを作成
apiUrl = "https://zipcloud.ibsnet.co.jp/api/search?zipcode=" & Replace(zipcode, "-", "")
' HTTPリクエスト
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
xmlhttp.Open "GET", apiUrl, False
xmlhttp.Send
' レスポンスをJSONとして解析(VBA-JSONライブラリが必要)
If xmlhttp.Status = 200 Then
Set json = JsonConverter.ParseJson(xmlhttp.responseText)
If json("status") = 200 Then
Set result = json("results")(1)
GetAddress = result("address1") & result("address2") & result("address3")
Else
GetAddress = "住所が見つかりません"
End If
Else
GetAddress = "API接続失敗"
End If
End Function
VB✅ 実行例
=GetAddress("1000001")→ 「東京都千代田区千代田」=GetAddress("1350061")→ 「東京都江東区豊洲」
💡 メリット
- 常に最新の住所データを利用できる(CSV更新不要)
- 表記ゆれが少ない(公式データベースに基づく)
- Excel関数のように使える(セルに
=GetAddress("郵便番号")と入力可能)
注意点
- JSONを扱うために VBA-JSONライブラリ(GitHub配布)が必要
- ネット接続環境が必須
- APIの利用制限(アクセス回数制限)があるため、大量データ処理はCSV方式の方が安定
👉 まとめると、郵便番号データベースをローカルに持つ方法は安定性が高く、APIを使う方法は最新性と手軽さが強みです。
【参考】zipcloud API 公式ドキュメント obasan.net

