Utilicé un tutorial para calcular automáticamente la distancia de viaje con la API de direcciones de Google, según las direcciones que ingresé en Excel. Creé con éxito una clave API y usé una página de tutorial que mostraba dos funciones en VBA, una para el tiempo y otra para la distancia:
'Returns the number of seconds it would take to get from one place to another Function TRAVELTIME(origin, destination, apikey) Dim strUrl As String strUrl = "https://maps.googleapis.com/maps/api/directions/json?origin=" & origin & "&destination=" & destination & "&key=" & apikey Set httpReq = CreateObject("MSXML2.XMLHTTP") With httpReq .Open "GET", strUrl, False .Send End With Dim response As String response = httpReq.ResponseText Dim parsed As Dictionary Set parsed = JsonConverter.ParseJson(response) Dim seconds As Integer Dim leg As Dictionary For Each leg In parsed("routes")(1)("legs") seconds = seconds + leg("duration")("value") Next leg TRAVELTIME = seconds End Function ' Returns the distance Function TRAVELDISTANCE(origin, destination, apikey) Dim strUrl As String strUrl = "https://maps.googleapis.com/maps/api/directions/json?origin=" & origin & "&destination=" & destination & "&key=" & apikey Set httpReq = CreateObject("MSXML2.XMLHTTP") With httpReq .Open "GET", strUrl, False .Send End With Dim response As String response = httpReq.ResponseText Dim parsed As Dictionary Set parsed = JsonConverter.ParseJson(response) Dim meters As Integer Dim leg As Dictionary For Each leg In parsed("routes")(1)("legs") meters = meters + leg("distance")("value") Next leg TRAVELDISTANCE = meters End FunctionCuando trato de usar la función de distancia, falla la mayor parte del tiempo. Puedo hacer que funcione si introduzco una sola dimensión de una ubicación, por ejemplo, "Kerkstraat 10", pero si agrego el nombre de la ciudad, por ejemplo, "Kerkstraat 10, Ámsterdam", aparece el error #Value en Excel.
Ya sea que use espacios, comas, puntos y comas, %20 o lo que sea en VBA, no parece importar y, curiosamente, la función de tiempo de viaje funciona perfectamente con una dirección "completa".
¿Alguien sabe qué podría estar mal, o si hay una forma mejor/diferente de obtener lo que necesito?
¡Gracias por adelantado!