# Modulo g-distancia en visual basic

[Inicio](https://www.todoexpertos.com/) › [Visual Basic](https://www.todoexpertos.com/temas/visual-basic) › [Ingeniería Informática](https://www.todoexpertos.com/temas/ingenieria-informatica) › [Programación](https://www.todoexpertos.com/temas/programacion) › [Visual Studio](https://www.todoexpertos.com/temas/visual-studio)

- Fecha de publicación: 2019-07-12
- Enlace canónico (HTML): https://www.todoexpertos.com/preguntas/9snnho4ur93nwnup/modulo-g-distancia-en-visual-basic

## Pregunta

*Por juan c.* · 2019-07-12

Hace cuestión de 1 año estaba creando un programa en access y ahora lo estoy haciendo de nuevo pero con visual studio y a base de tutoriales pude crear un modulo para extraer los cálculos de rutas de google maps.Ahora me encuentro de el modulo creado de G-DISTANCIA lo creo en visual studio con visual basic y no me lo acepta por algunos errores que no se solucionar.Este es el código de G-DISTANCIA que funciona al 100% en access:Function G_DISTANCIA(ORIGEN As String, DESTINO As String)Dim MyRequest As XMLHTTP60Dim mydomdoc As DomDocument60Dim distanceNode As ixmldomnodeG_DISTANCIA = 0On Error GoTo exitRouteORIGEN = Replace(ORIGEN, " ", "%20")DESTINO = Replace(DESTINO, " ", "%20")Set MyRequest = New XMLHTTP60MyRequest.Open "GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _& ORIGEN & "&destinations=" & DESTINO & "&key=API-GOOGLE"MyRequest.sendSet mydomdoc = New DomDocument60mydomdoc.LoadXML MyRequest.responseTextSet distanceNode = mydomdoc.SelectSingleNode("//row/element/distance/value")If Not distanceNode Is Nothing Then G_DISTANCIA = (distanceNode.Text / 1000) & ""exitRoute:Set distanceNode = NothingSet mydomdoc = NothingSet MyRequest = NothingEnd FunctionCuando lo pego en visual studio en un modulo me da errores :(

## Respuestas (1)

### 1. Respuesta aceptada de Sveinbjorn El Rojo
*Fecha: 2019-07-12 · Votos: 2 (+2/-0)*

No dices qué errores te da, ni dónde... con lo que es prácticamente imposible ayudarte efectivamente. Lo único que se me ocurre ( y no soy experto en visual) es que no hayas activado la librería o referencia para trabajar con los objetos xml que creas.

Los errores que me salen son los siguientes:No se admiten instrucciones de asignación Let y Set -----> Linea 13Los argumentos de método se deben incluir entre los paréntesis -----línea 14Como los anteriores hay unos cuantos y después están los siguientes:No esta definido el tipo xmlhttp60 ----línea 4"" Domdocument60 ------ línea 5"" Ixmldomnode ----línea 6

No esta definido el tipo xmlhttp60Te falta registrar la librería para trabajar con el objeto xml, como te señalaba antes, será la Micorsoft XML o algo así (debes buscar la misma que tenías registrada en Access): enlace externoNo se admiten instrucciones de asignación Let y Set -----> Linea 13Elimina esas lineas y cuando declaras las variables, hazlo así:Dim MyRequest As New XMLHTTP60  -> linea 2 y elimina la linea "Set MyRequest = New XMLHTTP60" (y lo mismo con el resto de set....)Los argumentos de método se deben incluir entre los paréntesis -----línea 14Ésta es fácil, haz lo que te dice:MyRequest.Open ("GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _
& ORIGEN & "&destinations=" & DESTINO & "&key=API-GOOGLE")

no le saco punta :( he agregado la lreferencia system.xml y nada.... he visto el tutorial y agrego la libreria xml como dice pero me pierdo con el codigo

No tengo instalado vb6 y no puedo hacer pruebas, pero dado que vba y vb6 no son el mismo lenguaje de programación ( aunque comparten mucho) entra dentro de lo normal que un código VBA no te funcione a la primera en vb6.La referencia que usas en access es la Microsoft Xml 6.0, o al menores la que uso yo al trabajar con códigos similares, y esa referencia es la que te habilita para trabajar con los objetos XMLHTTP60, DomDocument60... que declaras en tu código. Desconozco si la librería que has registrado tiene esos objetos (supongo que no, porque sigues con problemas...) En cuanto al código en sí, solo tienes que hacer los cambios que te indicaba antes.

he reducido los errores a 6 asi llevo el codigo:Imports.MSXML2Module Module2Function G_DISTANCIA(ORIGEN As String, DESTINO As String)Dim MyRequest As XMLHTTP60 Dim mydomdoc As DomDocument60 Dim distanceNode As ixmldomnode G_DISTANCIA = 0On Error GoTo exitRoute ORIGEN = Replace(ORIGEN, " ", "%20") DESTINO = Replace(DESTINO, " ", "%20")MyRequest = New XMLHTTP60 MyRequest.Open("GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _& ORIGEN & "&destinations=" & DESTINO & "&key=API-GOOGLE") MyRequest.sendmydomdoc = New DomDocument60 mydomdoc.LoadXML(MyRequest.responseText)distanceNode = mydomdoc.SelectSingleNode("//row/element/distance/value") If Not distanceNode Is Nothing Then G_DISTANCIA = (distanceNode.Text / 1000) & ""exitRoute:distanceNode = Nothing mydomdoc = Nothing MyRequest = NothingEnd FunctionEnd Moduleahora me quedan los siguientes errores:Error BC30203 Se esperaba un identificador.  linea 1Error BC30002 No está definido el tipo 'XMLHTTP60'. linea 6Error BC30002 No está definido el tipo 'DomDocument60'. linea 7Error BC30002 No está definido el tipo 'ixmldomnode'. linea 8Error BC30002 No está definido el tipo 'XMLHTTP60'. linea 15Error BC30002 No está definido el tipo 'DomDocument60'. linea 20

Seguimos en la misma, todos esos errores son el mismo: no has registrado la librería adecuada para trabajar con esos objetos.Por otra parte, veo que no me has hecho caso con las correcciones del código, y así no creo que te funcione aunque no te de errores...

Module Module2Function G_DISTANCIA(ORIGEN As String, DESTINO As String)Dim MyRequest As New Xmlhttp60 Dim mydomdoc As New DomDocument60 Dim distanceNode As New ixmldomnode G_DISTANCIA = 0On Error GoTo exitRoute ORIGEN = Replace(ORIGEN, " ", "%20") DESTINO = Replace(DESTINO, " ", "%20") MyRequest.Open("GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _& ORIGEN & "&destinations=" & DESTINO & "&key=API-GOOGLE") MyRequest.send mydomdoc.LoadXML(MyRequest.responseText)distanceNode = mydomdoc.SelectSingleNode("//row/element/distance/value") If Not distanceNode Is Nothing Then G_DISTANCIA = (distanceNode.Text / 1000) & ""exitRoute:distanceNode = Nothing mydomdoc = Nothing MyRequest = NothingEnd Function

Vale.... creo que solucione el problema de la libreria.esto es lo que tengo ahora mismo :Imports MSXML2Module Module2Function G_DISTANCIA(ORIGEN As String, DESTINO As String)Dim MyRequest As New XMLHTTP60 Dim mydomdoc As New DOMDocument60 Dim distanceNode As IXMLDOMNode G_DISTANCIA = 0On Error GoTo exitRoute ORIGEN = Replace(ORIGEN, " ", "%20") DESTINO = Replace(DESTINO, " ", "%20") MyRequest.open("GET", "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" _& ORIGEN & "&destinations=" & DESTINO & "&key=&key=AIzaSyDB5ZXeg7HMfRt3vePCe2PC--4K0jokf2E") MyRequest.send mydomdoc.LoadXML(MyRequest.responseText)distanceNode = mydomdoc.SelectSingleNode("//row/element/distance/value") If Not distanceNode Is Nothing Then G_DISTANCIA = (distanceNode.Text / 1000) & ""exitRoute:distanceNode = Nothing mydomdoc = Nothing MyRequest = Nothing End FunctionEnd Moduleahora mismo solo me informa que estas 3 ultimasdistanceNode = Nothingmydomdoc = NothingMyRequest = Nothingel valor asignado a MyRequest, mydomdoc, distanceNode  no se utiliza nunca

Si te da error en esas últimas líneas, bórralas que no aportan nada

Vale, ya no me da error ahora solo que no me da el valor del xml jajaja. Con lo rápido que lo solucione en access

Quita esta línea, porque si por el medio te salta algún error, no te enteras de los que está pasando:On Error GoTo exitRoute

Por cierto, que no tengas errores de sintaxis, no quiere decir que el código no tenga errores... jejeje

---
*Fuente: [https://www.todoexpertos.com/preguntas/9snnho4ur93nwnup/modulo-g-distancia-en-visual-basic](https://www.todoexpertos.com/preguntas/9snnho4ur93nwnup/modulo-g-distancia-en-visual-basic) — consultado el 2026-10-23. Al citar, enlaza la URL canónica e indica la fecha de consulta.*
