Вместо того, чтобы автоматизировать IE и взаимодействовать со страницей, как это сделал бы пользователь, приведенный ниже код должен эмулировать запрос, запускаемый кнопкой 'Find'
на странице, но вам необходимо присвоить значение placeName
в коде (в настоящее время это "Delhi Airport, India"
).
Если вас интересуют только координаты (и никакой другой информации на остальной части страницы), то этот подход может быть вам полезен.
Вам нужно добавить ссылку (Tools > References > Scroll down and tick Microsoft XML, v6.0 > OK
), прежде чем пытаться запустить код.
Option Explicit
Private Sub Experiment()
Dim placeName As String
placeName = "Delhi Airport, India"
Dim WebClient As MSXML2.ServerXMLHTTP60
Set WebClient = New MSXML2.ServerXMLHTTP60
With WebClient
.Open "POST", "https://www.latlong.net/_spm4.php", True
.setRequestHeader ":authority", "www.latlong.net"
.setRequestHeader ":method", "POST"
.setRequestHeader ":path", "/_spm4.php"
.setRequestHeader ":scheme", "https"
.setRequestHeader "accept", "*/*"
.setRequestHeader "content-type", "application/x-www-form-urlencoded"
.setRequestHeader "origin", "https://www.latlong.net"
.setRequestHeader "referer", "https://www.latlong.net/"
.setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
.setRequestHeader "x-requested-with", "XMLHttpRequest"
Dim bodyToSend As String
bodyToSend = "c1=" & Application.EncodeURL(placeName) & "&action=gpcm&cp="
.send bodyToSend
.waitForResponse
MsgBox ("Server's response to the request for Place Name '" & placeName & "' is " & _
vbNewLine & vbNewLine & .responseText)
End With
End Sub
Вы можете получить доступ к ответу сервера (который будет содержать координаты, если запрос был успешным).) с WebClient.responseText
(или просто .responseText
внутри оператора With
) - и затем сделайте с ним то, что вам нужно.