郵便番号から住所を表示する方法
◆概要
このページは、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ボタンをクリックすると、下の図のように東京都千代田区有楽町の郵便番号を表示します。