Excel

webサービスAPIを使って、セルに入力された郵便番号を基に住所を表示するユーザー定義関数のサンプルプログラムです。

例えば、A1のセルに"1638001"と入力したら隣のセルに"東京都新宿区西新宿2丁目8-1"と表示する関数です。

郵便番号に"-"(ハイフン)が含まれていても動作するようになっています。

AccessのVBAでも使用できます。
スポンサードリンク


作成したユーザー定義関数について

Accessには、もともと郵便番号から住所に変換する機能があるし、ExcelにもMicrosoftが公式に配布しているアドイン「Excel アドイン: 郵便番号変換ウィザード (2000-2007 ユーザー用)」があるけど、アドインがなくてもインターネットに接続できる環境下であれば動作します。

逆を言えば、インターネットに常時つながっている環境じゃないと動作しないので注意してください。

他の人に使わせる場合に、アドインダウンロードさせたり、アドインの説明めんどくさいなーとか思ってる人は使ってみてください。

ちなみにこのサンプルはAccessでも使えます。

以下Excel VBAのサンプルプログラム説明。

サンプルプログラムで使用されているwebサービスAPIについて

VBAのサンプルプログラムの説明の前に、このサンプルプログラムで使用されているwebサービスAPIについて少し説明しておきます。

使用しているwebサービスAPIは、「郵便番号検索API」を使っています。

APIの仕様や注意点などは、「郵便番号検索API」を参照してください。

利用にあたっては必ずサイトの内容を一通り読んでおいてください。

特に利用規約については必ず一読しておいてください。

メールアドレスを登録すれば、制限や重要な仕様変更等について事前にご連絡してもらえるようです。

つーか、日本郵便でこういうAPI作ってくれたらいいのに。

ユーザー定義関数のサンプルプログラムの作成手順

webサービスAPIを使用して郵便番号から住所に変換するにユーザー定義関数の作成手順を以下に記載します。
  1. Excelの[ツール]メニューから[マクロ]をポイントし、[Visual Basic Editor]をクリックする。

  2. [Visual Basic Editor]が起動するので、[挿入]メニューから[標準モジュール]をクリックする。

  3. 標準モジュールに以下のコードをコピーして貼り付ける。
    Function ZipCodeToAddress(strZipcode)
    Dim objXMLHttp As Object, zipArr
    
    '"-"ハイフンが入っていた場合は取り除く
    strZipcode = Replace(strZipcode, "-", "")
    
    Set objXMLHttp = CreateObject("MSXML2.XMLHTTP")
        objXMLHttp.Open "GET", "http://zip.cgis.biz/csv/zip.php?zn=" & strZipcode, False
        objXMLHttp.Send
        
        'APIの結果を配列に代入する
        zipArr = Split(Replace(objXMLHttp.responseText, """", ""), ",")
            
            '正常な値が返ってきた場合は配列の要素数が15になる
            If UBound(zipArr) = 15 Then
                ZipCodeToAddress = zipArr(12) & zipArr(13) & zipArr(14)
            Else
                '郵便番号が間違っている場合や未入力の場合は、空文字を返す
                ZipCodeToAddress = ""
            End If
    
    End Function
    
ユーザー定義関数の作成はこれで終了。

実際の使い方として、郵便番号が入力されるセルを"A1"として、住所を表示したいセルが"B1"だった場合は、"B1"セルに以下のように入力する。

=ZipCodeToAddress(A1)

以上。

次の記事にこの関数を応用して、関数の結果として住所を表示するのではなく、特定のセルに郵便番号が入力されたら、値としてセルに住所を入力するサンプルを作成する予定。

スポンサードリンク

  

関連記事