REST APIを利用して、郵便番号一覧から住所を求めていくVBAのサンプルコード(郵便番号検索API版)

VBA
記事内に広告が含まれています。

REST APIを利用して、郵便番号一覧から住所を求めていくVBAのサンプルコードを公開してみます。

ここでは「郵便番号検索API」のサービスを利用してコードを作成します。

《広告》

使用するWebAPI

Excel単体で住所情報の取得・検索はできないので、下記「郵便番号検索API」の力を借りています。

サービス名郵便番号検索API
運営zip.cgis.biz
URL郵便番号検索API(http://zip.cgis.biz/)
概要郵便番号検索APIでは、郵便番号から住所を検索するWEBサービスAPIを無料提供しております。

仕様

画面仕様

  • シートのA列に住所を求めたい「郵便番号」の一覧を入力しています。
  • シートの右側に住所を出力するための実行ボタンが配置されています。
  • 実行ボタンを押下すると、シートのB列とC列に「住所」と「住所(カナ)」が出力されます。

ソースコード

Sub ボタン1_Click()
    Dim objXMLHttp As Object, zipArr
    Dim yubinNo As Long
    Dim line As String
    Dim splitLine() As String
   
    Dim i As Long
    i = 2 '行番号
    
    Do While Cells(i, 1).Value <> ""
    '入力値からハイフンの削除
     yubinNo = Replace(Worksheets("Sheet1").Cells(i, 1).Value, "-", "")
    
     Set objXMLHttp = CreateObject("MSXML2.XMLHTTP")
        objXMLHttp.Open "GET", "http://zip.cgis.biz/csv/zip.php?zn=" & yubinNo, False
        objXMLHttp.Send
     
     line = Replace(objXMLHttp.responseText, vbLf, ",")    '改行削除
     line = Replace(line, """", "")    'クォート削除
     line = Replace(line, "none", "")    'noneの文字列削除(情報がない場合、noneのため)
     
     splitLine = Split(line, ",")    'CSVを配列へ格納
     
     Worksheets("Sheet1").Cells(i, 2).Value = splitLine(13) & splitLine(14) & splitLine(15) & splitLine(16)
     Worksheets("Sheet1").Cells(i, 3).Value = splitLine(9) & splitLine(10) & splitLine(11) & splitLine(12)
     
     i = i + 1
    Loop
    
End Sub

ソースコードの補足

郵便番号の数だけ、下記の処理を繰り返します。

  1. シートのA列にある郵便番号を1つ取得します。
  2. 郵便番号をもとに「郵便番号検索API」から、郵便番号に対応した住所を取得します。
  3. APIから取得した住所をシートのB列、C列に出力します。 ※住所情報は必要に応じて結合します

APIから返ってくる値はCSV形式ですが、VBAの標準の文字列操作で行っています。

実行結果

ボタンを押下した結果、住所と住所(カナ)に住所が出力されました。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows10
Windows11
2ExcelExcel2016
環境一覧

以上です。

プロフィール

この記事を書いた人
田舎のエンジニア

日本の田舎に住むITエンジニアです。
かつては新卒から東京都内で活動していました。
30歳を過ぎたころから都会の生活に疲れ果て、某田舎に引っ越しました。
現在はノーコード、クラウド(Azure)、C#などをよくやります。
ただ少し金欠になった都合で、自宅ではコストのかからないことをしています。
モノ作りがとても好きです。

田舎のエンジニアをフォローする