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
環境一覧

以上です。