Excel VBA | 郵便番号APIを使ってオンラインで住所を取得する方法

Excel VBA VBA
スポンサーリンク

郵便番号データベースと突合するよりもさらに便利なのが「郵便番号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

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました