「顧客管理と売上管理を一緒にできるようなエクセルファイルってできるかな?」という話をお客様としたことがあったので、先週あたりからぼちぼちと検討中。
今日は顧客情報を登録する画面を作っていたのですが、悩んだのが郵便番号から住所を引っ張ってくる方法です。
ワークシートだとGetPhonetic関数を使うと上手くいくのですが、ユーザーフォームの場合はこの方法が使えないのでうーんと悩んでしまいました。アドインを入れると、端末ごとの設定が面倒だし・・・。
悩んだ時のグーグル先生ということで、さっそく聞いてみたところ、こんな方法を紹介したHPがありました。
Excel VBA:webサービスAPIを使って入力された郵便番号から住所に変換する関数のサンプル
これだと郵便番号をネットで投げると住所に変換して戻してくれるので、ネットにつながってさえいれば設定不要で使えるし、ファイルも軽いままでOKですね。
なるほど〜こんな方法もあるんだ・・・。
というわけで、リンク先のコードを頂いて、以下のような簡単なマクロを書いてみました。
Private Sub CommandButton1_Click()
'変数宣言
Dim Postalnum As Variant'郵便番号を変数に格納
Postalnum = TextBox4.Text'郵便番号のテキストボックスに3桁以上の郵便番号があり、住所がブランクの場合のみ住所を変換させる
If ((Len(Postalnum) >= 3) And (TextBox5.Value = "")) Then'変数を渡して、結果をテキストボックスに入れる
TextBox5.Text = ZipCodeToAddress(Postalnum)End If
End Sub
結果は大成功!