Buscar datos en un txt desde excel

Tengo un archivo en notepad de un peso aproximado de 3 MB, es una base de datos de todos los códigos postales de México, lo que quiero es que si yo capturo un código postal en "a1" si le doy click en "boton" buscar, me arroje la comunidad y estado. La nomenclatura que trae el archivo es más o menos así

c.p. | comunidad |estado| region | blah | blah | blah |

12345 | comunidad del codigo |region del codigo | otro | otro| otro|

45678 | san antonio|mexico df | otro | otro | otro |

¿Hay un modo de extraer esos datos?

Trate de poner en un libro independiente y todos esos datos suman casi 9 mb en un xls.

2 respuestas

Respuesta
2

Te anexo la macro para buscar en el archivo txt un código postal. Revisa las indicaciones para ejecutar la macro.

Sub BuscarCodigo()
'Por.Dante Amor
    celda = "A1"
    If Range(celda) = "" Then
        MsgBox "Captura un código en: " & celda
        Exit Sub
    End If
    '
    cod = Range(celda)
    Range(celda).Offset(, 1) = ""
    ruta = ThisWorkbook.Path & "\"
    ChDir ruta
    archivo = "codigos.txt"
    Open archivo For Input As #1
    Do While Not EOF(1)
         Line Input #1, linea
         If InStr(1, linea, cod) > 0 Then
            Range(celda).Offset(, 1) = linea
            existe = True
            Exit Do
        End If
    Loop
    Close #1
    If existe = False Then
        MsgBox "El código no existe"
    End If
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: BuscarCodigo
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Indicaciones:

- Guarda el archivo de excel con la macro en el mismo directorio donde tienes el archivo txt con los códigos postales.

- Cambia en la macro "codigos.txt", por el nombre de tu archivo txt

- Escribe el código postal en A1, presiona el botón, si la macro lo encuentra pondrá los datos en la celda B1.


Saludos. Dante Amor

Recuerda valorar la respuesta.

Muchas gracias Dante, si tengo oportunidad el lunes (hoy sábado) lo pruebo en la oficina.

De hecho tengo un proyecto de un cotizador y lo pienso hacer de forma inversa, tengo ciertos datos obligatorios una vez completados continua con el resto de procesos, lo voy a incluir en mi código,

Pero tengo una duda dentro de los códigos hay varios códigos postales que se repiten por decir:

55515 col. bordos ecatepec edo mex

55515 col san andres ecatepec edo. mex.

Como te comento se me ocurre hacer (modo conceptual)

Repeat hasta error

Tu código buscar

next

msgbox (cada una de las coincidencias que encontro)

Ya el usuario seleccionaría que código postal desea utilizar si hay más de una coincidencia. Para almacenarlo en una tabla

Algo así parecido.

Pero no se como hacer esta ultima parte de seleccionar uno de los valores arrojados y así esta variable se guarde en la tabla.

Pero gracias nuevamente como te comento, el lunes le dedico un rato a experimentar, haber si me puedes ayudar con la ultima parte.

Te agradezco de antemano la respuesta que me ofreciste y más aun por los pasos para entrar al editor y poder ejecutar la macro.

"Muchas veces tenemos la respuesta a muchas cosas, pero no sabemos que hacer con ella."

Te anexo la macro actualizada, si pones el código en la celda A1, la macro te pondrá todos los códigos que encuentre en la columna B.

Sub BuscarCodigo()
'Por.Dante Amor
    celda = "A1"
    If Range(celda) = "" Then
        MsgBox "Captura un código en: " & celda
        Exit Sub
    End If
    '
    cod = Range(celda)
    n = Range(celda).Row - 1
    c = Range(celda).Column + 1
    Columns(c).ClearContents
    ruta = ThisWorkbook.Path & "\"
    ChDir ruta
    archivo = "codigos.txt"
    Open archivo For Input As #1
    Do While Not EOF(1)
         Line Input #1, linea
         If InStr(1, linea, cod) > 0 Then
            Range(celda).Offset(n, 1) = linea
            n = n + 1
            existe = True
            'Exit Do
        End If
    Loop
    Close #1
    If existe = False Then
        MsgBox "El código no existe"
    End If
End Sub

¡Gracias!

Que buena onda, como te digo no he podido probar la macro y por lo que veo se repite la búsqueda hasta el "end of file",

Muchas gracias dante.

Lo probare el lunes y te doy mis impresiones.

Saludos desde méxico.

Respuesta

He visto que ha pasado un tiempo, te ha funcionado, necesito hacer algo similar pero que busque un EAN13, y me entregue el SKU y Size correspondientes. ¿Ustedes me podrían ayudar?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas