郵便番号から住所を表示する方法

◆概要

 このページは、Visual Basic 6.0で住所から郵便番号を表示する方法について記載しています。

 郵便番号から住所を表示する方法では、入力された郵便番号から住所を表示するプログラムコードをご紹介しました。


 今度は、逆に入力された住所の郵便番号を日本郵政公社が無償で公開しているCSV形式の郵便番号データから検索して、表示するプログラムコードをご紹介します。前回は、福岡県版のデータを使用しましたが、今回は、全国版のデータを利用します。以下のホームページから全国版の郵便番号をダウンロードしてください。なお、ダウンロードしたファイルは解凍のうえ、プロジェクトと同じフォルダに置いてください。

郵便番号ダウンロード

フォームにコマンドボタン(コントロール名:Commond1)を配置してください。


 標準モジュールに次のコードを実装します。

◆標準モジュール

Function AddrToPost( _
    strKen As String, strCity As String, strTown As String _
    ) As String
' *****************************************************************
' Copyright(C) White Tiger
' 作成日:2007/07/24 22:09
' 入力された住所(都道府県+市町村名+町域名)から郵便番号を返す関数
' 引数 strKen,strCity,strTown
' 戻り値 郵便番号7桁
' *****************************************************************
    Dim objFileSystem As Object     ' ファイルシステムオブジェクト
    Dim objFile       As Object     ' ファイルオブジェクト
    Dim strFileName   As String     ' 読み込むファイル名
    Dim CurLine       As String     ' CSVの一行
    Dim Array_Zip()   As String     ' CSVの各項目を表す配列
    Dim PostalCode    As String     ' 郵便番号
    Dim strKenmei     As String     ' 都道府県名
    Dim strCityName   As String     ' 市町村名
    Dim strTownName   As String     ' 町域名
    Dim Address       As String     ' 住所
    Dim AddressParm   As String     ' 住所
    Dim blnFlag       As Boolean    ' 成功フラグ
       
    '読み込むファイル名****************************
    '■日本郵政公社提供
    ' http://www.post.japanpost.jp/zipcode/dl/kogaki.html
    strFileName = App.Path & "\" & "KEN_ALL.CSV"    ' 全国郵便番号データ
    ' *********************************************
    
    ' 変数の初期化
    blnFlag = False
    
    'ファイルシステムオブジェクトへの参照
    Set objFileSystem = CreateObject("Scripting.FileSystemObject")
    
    'ファイルを開く
    Set objFile = objFileSystem.OpenTextFile(strFileName)
    
    ' 引数の都道府県名、市町村名、町域名を結合して検索する住所を作成
    AddressParm = strKen & strCity & strTown
    
    'ファイルの最後に達するまでループ
    Do Until objFile.atEndOfStream
        'ファイルを1行読み込む
        CurLine = objFile.readline
        ' 読み込んだデータをカンマで分解してArray_Zipという配列に格納する
        Array_Zip = Split(CurLine, ",")
        ' 配列に格納したデータから住所を作成する
        Address = Array_Zip(6) & Array_Zip(7) & Array_Zip(8)
        Address = Replace(Address, """", "")    ' " を取り除く
        
        ' 引数で渡された住所と比較
        If AddressParm = Address Then   ' 一致したとき
            ' 配列の3番目が7桁郵便番号。ダブルクォートを除去
            PostalCode = Replace(Array_Zip(2), """", "")
            blnFlag = True  ' 見つかったのでフラグを立てて
            Exit Do         ' ループを抜ける
        End If
    Loop
    
    If blnFlag = False Then
        MsgBox "一致する市町村名が見つかりませんでした。", vbInformation
        AddrToPost = ""
    Else
        AddrToPost = PostalCode    ' AddrToPost関数の戻り値にPostalCodeを格納
    End If
    
    'ファイルを閉じる
    objFile.Close
    
    'オブジェクトを開放
    Set objFileSystem = Nothing
    Set objFile = Nothing

End Function

 次にフォームモジュールに次のコードを実装します。

◆フォームモジュール

Private Sub Command1_Click()
    Dim strPostalCode As String
    
    strPostalCode = AddrToPost("東京都", "千代田区", "有楽町")
    If strPostalCode = "" Then
        Exit Sub
    Else
        MsgBox ("東京都千代田区有楽町の郵便番号は " & strPostalCode & "です。"), _
            vbInformation, "郵便番号検索"
    End If
End Sub

◆実行結果

 Command1ボタンをクリックすると、下の図のように東京都千代田区有楽町の郵便番号を表示します。

実行結果

▼ページトップへ