For years in Excel 2007 I used the Public Function GetDistance () VBA code in a module added in Visual Basic as given below (with my API key removed and replaced with "YOUR_KEY"). Now in Microsoft 365 excel and Excel 2007, the code returns the error handling value of -1, regardless of what addresses are given. Any idea why?
'Calculate Google Maps distance between two addresses
Public Function GetDistance(start As String, dest As String)
Dim firstVal As String, secondVal As String, lastVal As String
firstVal = "https://maps.googleapis.com/maps/api/distancematrix/json?origins="
secondVal = "&destinations="
lastVal = "&mode=car&language=pl&sensor=false&key=YOUR_KEY"
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
objHTTP.Open "GET", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
If InStr(objHTTP.responseText, """distance"" : {") = 0 Then GoTo ErrorHandl
Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
Set matches = regex.Execute(objHTTP.responseText)
tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
GetDistance = CDbl(tmpVal)
Exit Function
ErrorHandl:
GetDistance = -1
End Function
I tried running the code that worked in 2021, and now it returns an error handling value of -1. I tried the following with no improvement:
- regenerated my API key, no change
- tried both variants, no change:
- firstVal = "https://maps.googleapis.com...."
- firstVal = "http://maps.googleapis.com..."
I did try some other things, but I'm not sure they are worth mentioning here....