Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            VBA: gestionamos el filtro por formulario
            09/05/2022
            VBA: Google Maps API calcular la distancia entre dos coordenadas
            11/05/2022
            Mostrar todos

            VBA: conocer código postal y coordenadas con la API de Google Maps

            Publicado por Luis Viadel
            Categorías
            • Destellos formativos
            Etiquetas
            • API
            • Google maps
            • VBA
            Public Function cpMap(ByVal Direc As String, ByVal POB As String) As String
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-conocer-codigo-postal-y-coordenadas-con-la-api-de-google-maps
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : cpMap
            ' Autor original    : Luis Viadel
            ' Fecha             : 13/01/2020
            ' Propósito         : Búsqueda de códigos postales y coordenadas en Google Maps
            ' Retorno           : Devuelve las coordenadas de la posición y el C.P.
            ' Argumento/s       : La sintaxis del procedimiento o función consta del siguiente argumento:
            '                     Parte         Modo           Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     direc      Obligatorio     Dirección a buscar
            '                      pob       Obligatorio     Población
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Referencia        : Microsoft XML, v6.0
            ' Mas información   : https://mapsplatform.google.com/
            ' Importante        : deberemos crear una cuenta de desarrollador para obtener una APIKey
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                    portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento.
            '
            'Sub cmpa_test()
            'Dim txtzip as string
            'Dim direc as string, pob as string
            '
            'direc=""
            'pob=""
            'txtzip = cpMap(Direc, POB)
            'Debug.print txtZip
            
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim objXMLHTTP As MSXML2.XMLHTTP60
            Dim sURL As String, datos As String, Str1 As String, subdata As String, CP As String
            Dim J As Integer, I As Integer, intWhere As Integer
            Dim ArrayRes
            
            On Error Resume Next
            
            Set objXMLHTTP = New MSXML2.XMLHTTP60
                    
                sURL = "https://maps.googleapis.com/maps/api/place/textsearch/json?query="
                sURL = sURL & UTF8(Direc) & "%20" & UTF8(POB)
                sURL = sURL & "&key=" & APIKey
                    
                With objXMLHTTP
                    .Open "GET", sURL, False
                    .setRequestHeader "Content-Type", "application/json"
                    .Send ("")
                End With
                              
                Str1 = objXMLHTTP.responseText
            Debug.Print Str1
            Set objXMLHTTP = Nothing
            
                ArrayRes = Split(Str1, "formatted_address")
            
                J = UBound(ArrayRes) - LBound(ArrayRes) + 1
            
                For I = 1 To 1
                    subdata = ArrayRes(I)
                    datos = Right(subdata, Len(subdata) - 5)
                    intWhere = InStr(datos, "geometry")
                    datos = Left(datos, intWhere - 1)
                    
                    intWhere = InStr(datos, ",") 'Calle
                    datos = Right(datos, Len(datos) - intWhere - 1)
                    
                    intWhere = InStr(datos, ",")
                    datos = Right(datos, Len(datos) - intWhere - 1)
                    CP = Left(datos, 5)
                Next I
            
                ArrayRes = Split(Str1, "lat")
            
                J = UBound(ArrayRes) - LBound(ArrayRes) + 1
            
                For I = 1 To 1
                    subdata = ArrayRes(I)
                    datos = Right(subdata, Len(subdata) - 4)
                    intWhere = InStr(datos, ",")
                    latitud = Left(datos, intWhere - 1)
                    latitud = Trim(latitud)
                Next I
                
                ArrayRes = Split(Str1, "lng")
                
                J = UBound(ArrayRes) - LBound(ArrayRes) + 1
            
                For I = 1 To 1
                    subdata = ArrayRes(I)
                    datos = Right(subdata, Len(subdata) - 4)
                    intWhere = InStr(datos, "}")
                    longitud = Left(datos, intWhere - 1)
                    longitud = Trim(longitud)
               Next I
            
            cpMap = CP & "," & latitud & "," & longitud
            
            End Function
            
            Function UTF8(strTexto As String) As String
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vba-conocer-codigo-postal-y-coordenadas-con-la-api-de-google-maps
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : UTF8
            ' Autor original    : desconocido
            ' Fecha             : desconocida
            ' Propósito         : modificar cadenas de texto para que sean legibles por un navegador web
            ' Retorno           : Devuelve la cadena transformada
            ' Argumento/s       : La sintaxis del procedimiento o función consta del siguiente argumento:
            '                     Parte         Modo           Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     strTexto   Obligatorio     Cadena que queremos trnsformar
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                    portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento.
            '
            'Sub cmpa_test()
            'Dim strtxto as string
            '
            'strtxto=""
            'strtxto = UTF8(strtxto)
            '
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            strTexto = Replace(strTexto, " ", "%20")
            strTexto = Replace(strTexto, "Ñ", "%C3%91")
            strTexto = Replace(strTexto, "ñ", "%C3%B1")
            strTexto = Replace(strTexto, "á", "%C3%A1")
            strTexto = Replace(strTexto, "à", "%C3%A0")
            strTexto = Replace(strTexto, "â", "%C3%A2")
            strTexto = Replace(strTexto, "ã", "%C3%A3")
            strTexto = Replace(strTexto, "ä", "%C3%A4")
            strTexto = Replace(strTexto, "å", "%C3%A5")
            strTexto = Replace(strTexto, "è", "%C3%A8")
            strTexto = Replace(strTexto, "é", "%C3%A9")
            strTexto = Replace(strTexto, "ê", "%C3%AA")
            strTexto = Replace(strTexto, "ë", "%C3%AB")
            
            strTexto = Replace(strTexto, "ì", "%C3%AC")
            strTexto = Replace(strTexto, "í", "%C3%AD")
            strTexto = Replace(strTexto, "î", "%C3%AE")
            strTexto = Replace(strTexto, "ï", "%C3%AF")
            
            strTexto = Replace(strTexto, "ð", "%C3%B0")
            strTexto = Replace(strTexto, "ò", "%C3%B2")
            strTexto = Replace(strTexto, "ó", "%C3%B3")
            strTexto = Replace(strTexto, "ô", "%C3%B4")
            strTexto = Replace(strTexto, "õ", "%C3%B5")
            strTexto = Replace(strTexto, "ö", "%C3%B6")
            
            strTexto = Replace(strTexto, "ù", "%C3%B9")
            strTexto = Replace(strTexto, "ú", "%C3%BA")
            strTexto = Replace(strTexto, "û", "%C3%BB")
            strTexto = Replace(strTexto, "ü", "%C3%BC")
            
            strTexto = Replace(strTexto, ",", "%2C")
            strTexto = Replace(strTexto, "ý", "%C3%BD")
            strTexto = Replace(strTexto, "þ", "%C3%BE")
            strTexto = Replace(strTexto, "ÿ", "%C3%BF")
            
            strTexto = Replace(strTexto, "÷", "%C3%B7")
            
            UTF8 = strTexto
            
            End Function
            
            ¡Ver en el repositorio!
            Compartir
            18
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            30/03/2023

            Tratamiento de errores: compilación condicional


            Leer más
            29/03/2023

            Tratamiento de errores: errores personalizados


            Leer más
            28/03/2023

            Tratamiento de errores: Resume


            Leer más

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Replace Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              Tratamiento de errores: compilación condicional
              30/03/2023
            • 0
              Tratamiento de errores: errores personalizados
              29/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados