忍者ブログ
ExcelVBAとGoogleMapの連携について。 作成したExcelVBAの保管や備忘録的なもの。
Calendar
<< 2024/11 >>
SMTWTFS
12
3456 789
10111213 141516
17181920 212223
24252627 282930
Recent Entry
Recent Comment
Category
5   4   3   2  
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

GoogleのGeocodingサービスを使って、名称や住所から緯度、経度情報を返すユーザ定義関数です。
HttpリクエストのReadyStateは監視してないため、シートが再計算されると固まる上にデータが返ってこない。
Application.Volatile削って手動で再計算すれば何とかなる・・・かも。



'***************************************************************************************************
'関数名:GETGEOCODE
'機 能:GoogleMapのジオコーディングを用いて住所から座標値を取得します。
'引 数:Address$[String]
'戻り値:[String]
'備 考:多用しないこと。1日あたり2500リクエストまで。重複値、再計算時もカウント。
'***************************************************************************************************
Public Function GETGEOCODE(Address$) As String
Dim Url As String
Dim Req As New MSXML2.XmlHttp
Dim Doc As MSXML2.IXMLDOMNodeList
Const GoogleGeoCodingURL$ = "http://maps.google.com/maps/api/geocode/xml?sensor=false&address="
On Error Resume Next
Application.Volatile
If Address = "" Then GETGEOCODE = "": Exit Function
'AddressをURLエンコードし、リクエストURLを作成
With CreateObject("ScriptControl")
    .Language = "Jscript"
    Url = GoogleGeoCodingURL & .CodeObject.encodeURIComponent(Address$)
End With
'Httpリクエストのレスポンスから座標値が格納されたノードを取得
With Req
    .Open "POST", Url, False
    .send
    Set Doc = .responseXML.getElementsByTagName("location")
End With
With Doc.Item(0)
    GETGEOCODE = .ChildNodes(0).Text & "," & .ChildNodes(1).Text
End With
End Function
PR

コメント
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:
akira kumagai
性別:
非公開
P R
Template & Icon by kura07 / Photo by Abundant Shine
Powered by [PR]
/ 忍者ブログ