SSブログ

Excel2000 VBA 日本郵便の郵便番号CSVを利用する [Excel2000 VBA独習]

Excel2000 VBA  日本郵便の郵便番号CSVを利用する

ttp://www.post.japanpost.jp/zipcode/dl/kogaki.html

ここ数日住所文字列をいじっていたけど、郵便番号を利用しないのでは実用的でないので、日本郵便のCSVファイルを利用する。
日本郵便のHPから全国一括版は行数がエクセルで使える行数をオーバーするので、各都道府県別を個別にDLして結合することにした。
行数は約12万行ほどでシートを2つ使用した。
シート1には1北海道から21岐阜県まで (62080行)
シート2には22静岡県から47沖縄県まで (60296行)

エクセルで開くと、7桁郵便番号でゼロが先頭にあると表示されないので、ゼロを追加するマクロ作った。

Sub 郵便番号を7桁に()
'日本郵便の郵便番号CSVファイルの郵便番号の表示を7桁にする(C列)
'
Dim last_row, i As Long
Dim buf As String

'最終行
    last_row = Cells(Rows.count, 1).End(xlUp).Row
'C列の書式を文字列に(7桁郵便番号)
    Range("C:C").NumberFormatLocal = "@"
'7桁に
    For i = 1 To last_row
        buf = "0000000" & Cells(i, "C")  '例 640941→0000000640941
        buf = Right(buf, 7)              '例 0000000640941→0640941
        Cells(i, "C") = buf
    Next i
    
End Sub

 


郵便番号から住所名を調べる

 

作成したデータベース使用する

excel_yubinNO.jpg

Sub 郵便番号から住所を調べる()
'
'作成したDBを利用して郵便番号から住所を調べる
'実験その1
On Error Resume Next
Dim inputNO, DB, WB As Variant
Dim dbName, dbPath As String
Dim book_count, i, find_row, shNO As Long
Dim book_name, sheet_name, ken_name, city_name, tiku_name As String

'DBの起動
'データベースが開いているか確認
dbName = "yubinNO_DB.xls"
    '開いているブック数
        book_count = Workbooks.count
    'ブック名取得
    For i = 1 To book_count
          If Workbooks(i).Name = dbName Then GoTo DB
    Next i
    'データベースを開く
    dbPath = "D:\bk\office\"
    Workbooks.Open dbPath & dbName
DB:
    Application.ScreenUpdating = False 'ブックを見せない
    Set DB = Workbooks(dbName)

INBOX:
    inputNO = InputBox("郵便番号を入力してくだい [ - なしで]")
'判定
    If Len(inputNO) <> 7 Then MsgBox "番号が間違っています": GoTo INBOX
'DBのシートに該当する郵便番号があるか調べる
    For i = 1 To 2
        find_row = DB.Sheets(i).Range("C:C").Find(inputNO).Row
        If find_row > 0 Then shNO = i: Exit For
    Next i
'DBから該当する郵便番号、都道府県名、市区町村名、地域名をMSGBOXに表示
    If find_row = 0 Then MsgBox "該当する郵便番号がありません": GoTo owari
        ken_name = DB.Sheets(shNO).Cells(find_row, "G")
        city_name = DB.Sheets(shNO).Cells(find_row, "H")
        tiku_name = DB.Sheets(shNO).Cells(find_row, "I")
        inputNO = Left(inputNO, 3) & "-" & Right(inputNO, 4)
    MsgBox inputNO & vbCrLf & ken_name & vbCrLf & city_name & vbCrLf & tiku_name
owari:
DB.Close
Set DB = Nothing
End Sub
 

 


タグ:Excel2000 VBA
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。