もくじ

taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
さて、住所なんかを入力するフォームがあった場合、正直住所の入力って面倒ですよね?
WEB上のフォームなんかだと郵便番号から自動で引っ張ってくれるフォームなんかも存在ます。これをVBAでも作成できないか?
と考えていろいろと調べた結果【WEB API】を使用するのが良いだろうということになりましたので、今回はその方法についてご紹介します(笑)
VBAで郵便番号から住所を取得する方法
さて、今回私が使用したのは【Webサービス by Yahoo! JAPAN】から提供されている【郵便番号検索API】です。
正直に言うと別サイトの【郵便番号検索API】のほうが扱いやすかったのですが、このAPIを使用した方法は別のサイト様でも解説していたので、ぶっちゃけ導入がめんどくさい【yahooAPI】を使用してみました(;^ω^)
APIの利用登録
まずは今回使用するYahooAPIはヤフーにアプリケーションの登録なんかをしなければいけません、これはYahoo!IDを持っていれば簡単に取得することができますのでこちらから登録して下さい。
※クライアントサイドを選べば良いと思います。


すると赤枠の中に長い英数字が表示されているはずです。今回はこのコードを使用しますのでどこかに控えておいてください。
また、今回はWEB APIを使用していますのでネットに接続状態でないと使用ができません。(Yahooのサーバーから情報を拾うので)
YahooAPIを使った郵便番号から住所を取得する
さて、さっそくですが今回はこのようなフォームを作成しました


フォームにはそれぞれ
- APIキー(TextBox3)
- 郵便番号(TextBox1)
- 住所(TextBox2)
で作成しています。
使用イメージとしてはこのような感じです。下記にサンプルファイルも用意しておきますのでご自由に改変してください。


- 申し訳ありませんが、APIキーはご自身でご用意ください。
- 今回使用したAPIの詳しい使用はこちらからご覧ください
- また、APIの使用についてはYahoo!の規約に遵守するようにお願いします。
Private Sub TextBox1_Change() TextBox2.Text = yahooAddress(TextBox1.Text) End Sub Function yahooAddress(Addresscode) Dim objHttp As XMLHTTP60 Dim XMLArr As String Dim start As Long Dim goal As Long Set objHttp = New XMLHTTP60 'Set objHttp = CreateObject("MSXML2.XMLHTTP") 'GETリクエストをヤフーに送る objHttp.Open "GET", "https://map.yahooapis.jp/search/zip/V1/zipCodeSearch?query=" & TextBox1.Text & "&appid=" & TextBox3.Text, False objHttp.Send 'responseTextでレスポンスを取得 XMLArr = objHttp.responseText '①:【住所情報である<Address>】の開始と終了の位置をInStr関数で取得して住所を抜き出す。 start = InStr(XMLArr, "<Address>") '【住所情報である<Address>】の開始位置を取得 goal = InStr(XMLArr, "</Address>") '【住所情報である<Address>】の終了位置を取得 '②:<Address>がない場合の処理 If start = 0 Or goal = 0 Then ' GoTo skip End If '③:①で取得した位置の間の文字をMid関数で抜き出す yahooAddress = Mid(XMLArr, start + 9, goal - start - 9) skip: Exit Function ' '郵便番号が間違っている場合は空を返す yahooAddress = "" End Function
今回のコードはCreateObjetct関数を使用して作成しております。
参照設定で使用したい方は【Microsoft XML, v6.0】を参照設定して変数の宣言を
Dim objHttp As XMLHTTP60 Set objHttp = New XMLHTTP60
と変更してご使用ください
ダウンロード
当サイトの免責事項をお読みになってからお使いください。

VBA Yahoo!API郵便番号検索Sample
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す