Wordで大量の住所を扱う場合、住所から郵便番号を調べて入力する作業は意外と時間がかかります。特に書類作成や顧客データの整理では、住所の前に郵便番号を追加する作業を自動化できると大きな効率化につながります。
Word VBAを利用すると、選択した住所文字列を取得し、郵便番号検索サービスなどと連携して郵便番号を取得した後、住所の前へ自動挿入する処理を作成できます。この記事では、その仕組みや実装時のポイント、フォント指定まで含めたマクロ作成の考え方を解説します。
Wordマクロで住所から郵便番号を取得する基本的な流れ
住所から郵便番号を自動入力するマクロは、大きく分けて以下の流れで処理します。
1つ目は、Word文書内で選択されている文字列を取得する処理です。2つ目は、その住所をもとに郵便番号を検索する処理です。そして3つ目は、取得した郵便番号を選択範囲の前へ挿入し、指定したフォントへ変更します。
Word VBA単体では郵便番号データを持っていないため、外部の郵便番号データベースやWeb APIなどを利用する形になります。
選択された住所文字列を取得するVBAコード
Wordでは、現在選択されている文字列はSelection.Textで取得できます。
例えば、文書内で「東京都千代田区千代田1-1」のような住所を選択した状態でマクロを実行すると、その文字列を変数へ保存できます。
基本的な取得処理は以下のようになります。
Dim address As String
address = Selection.Text
この値を郵便番号検索処理へ渡すことで、自動検索の元データとして利用できます。
郵便番号検索をマクロへ組み込む方法
住所から郵便番号を取得するには、郵便番号データを利用する方法が一般的です。
代表的な方法として、日本郵便が公開している郵便番号データをExcelやCSV形式で取り込み、VBAから検索する方法があります。この方法ならインターネット接続がなくても利用できます。
また、Web APIを利用する場合は、VBAのHTTP通信機能を使って住所を送信し、返された郵便番号を取得する仕組みになります。
取得した郵便番号を住所の前へ貼り付ける処理
郵便番号を取得できたら、現在選択されている住所の前へ文字列を挿入します。
例えば「東京都千代田区千代田1-1」が選択されている場合、「〒100-0001 東京都千代田区千代田1-1」のような形式に変更できます。
選択範囲の前へ挿入する場合は、Selection.Range.InsertBeforeを利用します。
Selection.Range.InsertBefore "〒" & zipcode & " "
この処理によって、元の住所文字列を変更せずに郵便番号だけを追加できます。
郵便番号部分だけフォントをORRBへ変更する方法
指定した文字列だけフォントを変更する場合は、挿入した範囲を取得してFont.Nameを設定します。
例えば、郵便番号部分だけをORRBフォントにしたい場合、挿入した文字列範囲に対して以下のような指定を行います。
Range.Font.Name = "ORRB"
ただし、フォント名が正しくインストールされていない場合は反映されません。事前にWindowsへORRBフォントが登録されているか確認してください。
住所検索マクロを作る時の注意点
住所から郵便番号を取得する処理では、住所表記の揺れが問題になることがあります。
例えば「東京都新宿区西新宿」と「東京都新宿区西新宿1丁目」では、郵便番号検索側の判定結果が変わる場合があります。
実際に業務で利用する場合は、検索できなかった場合のエラー処理や、複数候補が出た場合の確認画面を追加すると安全に運用できます。
ChatGPTでVBAコードを作成するときのポイント
Word VBAのような自動化処理は、単純なコード生成だけでは動作しないことがあります。
特に郵便番号検索のように外部データを扱う場合は、「どの郵便番号データを使うか」「ネット接続が必要か」「住所の形式は何か」などの条件を明確に伝えることが重要です。
例えば「選択文字列を取得する部分」「郵便番号検索部分」「Wordへの挿入部分」「フォント変更部分」のように分割して作成すると、動作確認しやすいマクロになります。
まとめ|Word VBAなら住所入力作業を効率化できる
Wordで選択した住所から郵便番号を取得し、住所の前へ自動入力する処理はVBAで実現できます。
ポイントは、住所取得、郵便番号検索、文字列挿入、フォント設定という4つの処理に分けて作成することです。
また、業務で利用する場合は郵便番号データの更新や検索エラーへの対応も重要になります。正しく設計すれば、住所入力作業の大幅な時間短縮につながる便利なWordマクロになります。


コメント