郵便番号から住所へ変換

先日,この記事を書き直していた時にYOLPのページを改めて見ていると,結構いろんなことができそうだなと思って,まずは簡単にできそうなところから試してみました。
自分はあまり使い道がなく,一般的にも需要があるかどうかわからないけど,郵便番号から住所に変換する関数を作ってみました。

何をするプロシージャか

郵便番号から住所に変換する関数です。名簿などで使う場合があるでしょうか。ワークシート関数として使うか,フォーム入力画面で使うといいかもしれません。

ZipAddress関数の作成

もちろん引数は郵便番号ですが,7桁の数字でも,3桁ハイフン4桁の文字列でもAPIで処理してくれますので,Stringにしておきます。戻り値は住所なのでStiringです。

動作確認状況

Excel 32ビット 64ビット
2007 たぶんOK(未確認)
2010 たぶんOK(未確認) たぶんOK(未確認)
2011 Mac NG
2013 OK たぶんOK(未確認)

2013の32ビットでしか動作確認していませんが、Win32APIを用いていないので、おそらく64ビットでもそのまま動くでしょう。
MSXMLオブジェクトを使用しているため,Mac2011では動作しません。

ソースコード

標準モジュールに以下のコードを記述して,Functionプロシージャを作成します。

コードの解説

7〜9行目

郵便番号検索APIへのリクエストURLを作成しています。詳細な利用方法や利用規約などはYahoo!デベロッパーネットワークで確認して下さい。
<あなたのアプリケーションID>には,Yahoo!デベロッパーネットワークに登録して取得したアプリケーションIDで置き換えます。

Webサービス by Yahoo! JAPAN

11〜13行目

郵便番号検索APIではXML形式でデータを受信しますので,その処理のためにIXMLHTTPRequestオブジェクトを用意してからリクエストを行います。

16,18行目

リクエストの結果,受信したXMLデータから,Addressタグを探して,最初に見つかった住所を戻り値に代入しています。

実装例・実行結果

この例のように簡単に実装したり,フォームに配置したりなどが考えられますが,今回はもっと簡単にワークシート関数で確認します。

A2セルに郵便番号を入力し,B2セルに作成した関数を記述します。郵便番号になっていれば,7桁の整数でも3桁ハイフン4桁の文字列でもOKです。

zip1

zip2

関連記事