ExcelVBAとGoogleMapの連携について。
作成したExcelVBAの保管や備忘録的なもの。
|
Calendar |
Recent Entry |
Recent Comment |
Category |
×
[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
'関数名: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
コメント
|
プロフィール
|
HN:
akira kumagai
性別:
非公開
最新記事
|
P R
|