【VBA】郵便番号から住所を取得する

VBAで
 ・郵便番号から住所を取得
できます!

VBAから
 ・郵便局のWebサイトへHTTPリクエストをして
 ・HTTPレスポンスから住所を抜き出す
ことで取得します!
※Web APIは使用しません。

PR

VBAコード

ここでは例として
 ・郵便番号「1000001」の住所を取得
します。
※郵便番号「1000001」の住所は「東京都千代田区千代田」です。

郵便番号「1000001」の住所
郵便番号「1000001」の住所
Option Explicit

Sub sample()
    
    Dim url As String
    Dim zip As String
    Dim httpReq As Object
    Dim httpDoc As Object
    Dim data As Object
    Dim line As Object
    Dim State As String
    Dim city As String
    Dim addressLine As String
    
    'URL
    url = "https://www.post.japanpost.jp/cgi-zip/zipcode.php?zip="
    '郵便番号
    zip = "1000001"
    
    'HTTPリクエスト実行
    Set httpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
    httpReq.Open "GET", url & zip, False
    httpReq.Send
    
    '「HTMLDocumentオブジェクト」にHTTPレスポンスを設定
    Set httpDoc = CreateObject("htmlfile")
    httpDoc.body.innerHTML = httpReq.responseText
    
    '都道府県と市区を抜き出す
    Set data = httpDoc.getElementsByClassName("data")
    State = data(1).innerText
    city = data(2).innerText
    '町村を抜き出す
    Set line = httpDoc.getElementsByClassName("line")
    addressLine = line(0).innerText

    '結果
    MsgBox (State & city & addressLine)

    '後片づけ
    Set httpReq = Nothing
    Set httpDoc = Nothing
    
End Sub

URLとして『郵便番号検索結果ページの「郵便番号」を除いた部分』を指定します(16行目)。
※「https://www.post.japanpost.jp/cgi-zip/zipcode.php?zip=」です。

郵便番号検索結果ページの「郵便番号」を除いた部分
郵便番号検索結果ページの「郵便番号」を除いた部分

任意の「郵便番号」を指定します(18行目)。
※上記では「1000001」を指定しています。

「winhttprequestオブジェクト」の
 ・「Open」メソッドでHTTP接続
 ・「Send」メソッドでHTTPリクエストを送信
をします(21~23行目)。

「HTMLDocumentオブジェクト」にHTTPレスポンスを設定します(26~27行目)。

「HTMLDocumentオブジェクト」の「getElementsByClassName」メソッドにより、HTTPレスポンスから住所を抜き出します(30~35行目)。

郵便局のWebサイトのHTML構成が変更された場合、合わせて上記のVBAコードも変更が必要になるかもしれません。

PR

実行結果

郵便番号から住所を取得できました。
※郵便番号「1000001」から住所である「東京都千代田区千代田」を取得できました。

実行結果
実行結果
PR

参考①

郵便局の「郵便番号検索ページ」は以下です。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「winhttprequestPオブジェクト」の「Open」メソッド


●「winhttprequestPオブジェクト」の「Send」メソッド


「HTMLDocumentオブジェクト」について
※公式オンラインマニュアルの当該ページを見つけることができませんでした。

タイトルとURLをコピーしました