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
ソースコードの補足
郵便番号の数だけ、下記の処理を繰り返します。
- シートのA列にある郵便番号を1つ取得します。
- 郵便番号をもとに「郵便番号検索API」から、郵便番号に対応した住所を取得します。
- APIから取得した住所をシートのB列、C列に出力します。 ※住所情報は必要に応じて結合します
APIから返ってくる値はCSV形式ですが、VBAの標準の文字列操作で行っています。
実行結果
ボタンを押下した結果、住所と住所(カナ)に住所が出力されました。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 Windows11 |
2 | Excel | Excel2016 |
以上です。