Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2016, 09:45   #1
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию Поиск координат на карте Google по адресу

Ребята, помогите плиз с макросом поиска координат на карте по адресу.
Может у кого уже что есть?


Я вот нашел поиск по яндексу но он что-то не отрабатывает до конца

Option Explicit

Function getYandexMapsGeocode(sAddr As String) As String

' Tools - References - Microsoft XML, v3.0
Dim oXhr As XMLHTTP
Dim sQuery As String
Dim oXml As DOMDocument
Dim oLatLng As IXMLDOMNode

getYandexMapsGeocode = ""
Set oXhr = CreateObject("Microsoft.XMLHTTP")
sQuery = "http://geocode-maps.yandex.ru/1.x/?geocode="
sQuery = sQuery & Replace(sAddr, " ", "+")
sQuery = sQuery & "&results=1"
oXhr.Open "GET", sQuery, False
oXhr.send
Set oXml = oXhr.responseXML
Set oLatLng = oXml.getElementsByTagName("pos")(0)
getYandexMapsGeocode = oLatLng.Text

End Function
sasha_prof вне форума Ответить с цитированием
Старый 11.03.2016, 13:43   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

попробуйте такой вариант
http://excelvba.ru/programmes/GoogleMapsCoordinates
EducatedFool вне форума Ответить с цитированием
Старый 11.03.2016, 14:13   #3
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Пробовал.
Выдает по всем адресам ошибки.
А в код нет доступа к сожалению

У Вас отрабатывает нормально?
sasha_prof вне форума Ответить с цитированием
Старый 11.03.2016, 15:12   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вместо этого
Код:
  sQuery = "http://geocode-maps.yandex.ru/1.x/?geocode="
  sQuery = sQuery & Replace(sAddr, " ", "+")
  sQuery = sQuery & "&results=1"
пробуйте такой
Код:
  sQuery = "http://geocode-maps.yandex.ru/1.x/?geocode=" & sAddr & "&results=1"
я координаты своего дома получил 30.365662 50.46292
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 11.03.2016 в 15:16.
IgorGO вне форума Ответить с цитированием
Старый 11.03.2016, 15:21   #5
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

у меня на строке
oXhr.send

выходит из обработки кода.
Может чтото в тулс включить?
sasha_prof вне форума Ответить с цитированием
Старый 11.03.2016, 15:33   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так надо яндекс или гугл?
на соседнем форуме есть рабочая функция для гугла
Код:
Function getGoogleMapsGeocode(sAddr As String) As String

Dim xhrRequest As XMLHTTP60
Dim sQuery As String
Dim domResponse As DOMDocument60
Dim ixnStatus As IXMLDOMNode
Dim ixnLat As IXMLDOMNode
Dim ixnLng As IXMLDOMNode

getGoogleMapsGeocode = ""

Set xhrRequest = New XMLHTTP60
sQuery = "http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&language=ru&sector=ru&address="
sQuery = sQuery & Replace(sAddr, " ", "+")
xhrRequest.Open "GET", sQuery, False
xhrRequest.send

Set domResponse = New DOMDocument60
domResponse.LoadXML xhrRequest.responseText
Set ixnStatus = domResponse.SelectSingleNode("//status")

If (ixnStatus.Text <> "OK") Then
    Exit Function
End If

Set ixnLat = domResponse.SelectSingleNode("/GeocodeResponse/result/geometry/location/lat")
Set ixnLng = domResponse.SelectSingleNode("/GeocodeResponse/result/geometry/location/lng")

getGoogleMapsGeocode = ixnLat.Text & ", " & ixnLng.Text

Dim d As Date
d = DateAdd("s", 1, Now)
Do While Now < d
DoEvents
Loop

End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.03.2016, 15:36   #7
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Впринципе всеравно.

но эта у меня тоже вылетает

на этом месте

If (ixnStatus.Text <> "OK") Then
Exit Function
End If


Скажите плиз что не так?
sasha_prof вне форума Ответить с цитированием
Старый 11.03.2016, 15:46   #8
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Можете показать что у вас подключено?
Вложения
Тип файла: docx 1.docx (32.6 Кб, 20 просмотров)
sasha_prof вне форума Ответить с цитированием
Старый 11.03.2016, 15:58   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я исключил замену пробелов на плюсы и у меня пошел написанный в 1-м сообщении код

Киев, Доброхотова №Дома
и получил координаты
30.365662 50.46292

библиотека Microsoft XML, v3.0 - была подключена
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.03.2016, 16:46   #10
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

не работает

ixnStatus.Text= Invalid_request
sasha_prof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать программу работы с картам (google; yandex; bing и т.п.), прокладывать маршрут с привязкой к карте и т.д. Skokov Помощь студентам 1 23.09.2015 02:35
Google Map APIv3 Надпись/лейбл на карте frozen123123 JavaScript, Ajax 0 04.11.2012 02:37
Поиск пути на карте mrbadge Общие вопросы Delphi 15 04.06.2012 11:57
Определение координат через google maps blax PHP 4 03.10.2011 11:22