Office関連

住所から郵便番号を取得するVBAマクロ

住所から郵便番号 VBA」といったキーワード検索でのアクセスがあったので、簡単な処理を考えてみました。

住所と郵便番号の変換で、真っ先に思いつくのが「郵便番号変換ウィザード」です。

・住所から郵便番号、または郵便番号から住所を入力する(~ Excel 2003)
http://office.microsoft.com/ja-jp/HP001057416.aspx
・住所から郵便番号、または郵便番号から住所を入力する(Excel 2007 ~)
http://office.microsoft.com/ja-jp/HP010077514.aspx

セル範囲を指定して一括で郵便番号←→住所の変換が出来るのは便利なのですが、マクロから呼び出すのにいちいちウィザードを立ち上げるのは効率がよくありません。

住所から郵便番号の変換さえ行えれば良いので、CodePlexにある郵便番号変換ウィザードのソースコードから必要な部分だけを取り出してみました。

Option Explicit

Private Declare Function AdvZipOpen Lib "MSYUBIN7" () As Integer
Private Declare Function MSYubin7SetKey Lib "MSYUBIN7" (ByVal KEYWORD As Long) As Integer
Private Declare Function SetHyphenMode Lib "MSYUBIN7" (ByVal iHyphenMode As Long) As Integer
Private Declare Function Yubin57 Lib "MSYUBIN7" Alias "yubin57" (ByVal szAddress As String, _
                                                                 ByVal szZip5Code As String, _
                                                                 ByVal szZip7Code As String, _
                                                                 ByVal szBarCode As String) As Integer

Private Const cKEYWORD = 776219008

Public Sub Sample()
  Debug.Print GetZipCode7("沖縄県那覇市首里金城町1-2")
End Sub

Public Function GetZipCode7(ByVal Addr As String) As String
  Dim szZip7 As String * 8
  Dim szRet As String
  Dim iRet As Integer
  Dim i As Long
  
  '初期化
  szRet = ""
  MSYubin7SetKey cKEYWORD ' set the password to use MSYUBIN7.DLL
  AdvZipOpen  'open ZIP dictionary
  SetHyphenMode 1 'ハイフン有
  
  iRet = Yubin57(Addr, vbNullString, szZip7, vbNullString)
  If (iRet And 1) <> 0 Then
    i = InStr(szZip7, Chr(0))
    If i > 0 Then
      szRet = Trim(Left(szZip7, i - 1))
    Else
      szRet = Trim(szZip7)
    End If
  End If
  GetZipCode7 = szRet
End Function

MSYUBIN7_01

上記の通り、非常に簡単なコードで住所から郵便番号を取得することができます。

気になるのはYubin7のライセンスですが、YU-TANGさんのHPによると、Officeの正規ユーザーであれば利用しても問題無い様子。
(何年も前の情報なので、今はどうか未確認ですが・・・)

まあ、とりあえず、上記コードで住所から郵便番号の変換ができますので、興味がある方は一度お試しください。

ただし、上記コードはMsyubin7.dllの機能を呼び出しているので、郵便番号変換ウィザードのインストールが必須であることと、住所・郵便番号の情報は郵便番号変換ウィザードに依存しているため、最新の情報では無い場合がある点には注意してください。

関連記事

  1. アイコン一覧

    Office 2013 アイコン一覧(A)

    ・Office 2013 アイコン一覧 NUM…

  2. Office関連

    ExcelとPowerPointに自動保存機能が追加されました。

    Excel 2016を使っていて、ふと気が付いたのが画面左上にある「自…

  3. Office関連

    [Win32 API]PowerPointマクロにショートカットキーを割り当てる。

    数日前、“PowerPointだとマクロにショートカットキーを割り当て…

  4. Office関連

    64ビット版OfficeでURLエンコード処理ができない?

    2011/12/28 追記:関連記事として「文字コードを指定してU…

  5. Office関連

    Excel 2013で駅すぱあとWebサービス APIの「経路探索」を使ってみました。

    「「駅すぱあとWebサービス API無償提供」を利用してみました。」で…

  6. アイコン一覧

    Office 365アイコン(imageMso)一覧(F)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

コメント

    • 山田
    • 2016年 11月 25日

    はじめまして。
    こちらの記事を参考に、住所→郵便番号に変換を試みているのですが
    szZip7が空欄のままで、何も出力されません。
    何か他に設定があるのでしょうか。
    郵便番号変換ウィザーどはインストールし、シート上で手動で出力はできます。
    ご教授いただけると幸いです。どうぞ宜しくお願いします。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP