Abrir, modificar y guardar txt que están en carpeta

Me gustaría que me ayudaran con un código de macro para realizar lo siguiente:

Tengo una carpeta en c:\mistxt, en ella tengo un numero variable de archivos txt, en un archivo de excel de la A2 en adelante tengo todos los nombres de los archivos txt, en b2 en adelante tengo los conceptos a agregar, lo que haría la macro es ir abriendo uno por uno los txt (celda A2, A3...) reemplazar en el txt una línea llamada concepto: XZRTYU por el concepto que esta junto de la celda que contiene el nombre del archivo es decir col B

A2 Archivo123.txt B2 ADGT125

El archivo de txt tiene una estructura

Nombre1: ddfffffg

Domicilio: ueioeuireore

Espacio en blanco

Folio:12q

Fecha: 2015-03-08

Concepto: XZRTYU ------> este concepto quiero reemplazarlo por el de B2 en este ejemplo

1 respuesta

Respuesta
1

Podrías enviarme tu archivo de excel y un par de archivos txt para ver exactamente cómo tienes los datos y preparar la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “gr77” y el título de esta pregunta.

Acabo de enviarte los archivos

Gracias

Saludos

Te anexo la macro para realizar las actualizaciones en los archivos txt.

Uno de los archivos que me enviaste, no se puede abrir, porque me dice que solamente es de lectura, por lo tanto no lo puedo guardar. Para ese caso agregué una validación en la macro y en la columna "D" te voy a poner si el archivo se actualizó o tuvo un problema, para que revises archivo los archivos que tienen error y les hagas una copia y entonces le ejecutas nuevamente la macro.

Sub ReemplazarTexto()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set h1 = ActiveSheet
    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        ruta = ThisWorkbook.Path & "\"
        archivo = Cells(i, "A")
        nuevo = Cells(i, "B")
        Workbooks.OpenText Filename:=ruta & archivo, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
        Set b = Cells.Find(What:="descripcion", After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
        If Not b Is Nothing Then
            b.Value = "Descripcion=" & nuevo
            On Error Resume Next
            ActiveWorkbook.Save
            num = Err.Number
            des = Err.Description
            If num <> 0 Then
                h1.Cells(i, "D") = "No se pudo guardar el archivo" & des
            Else
                h1.Cells(i, "D") = "Archivo actualizado"
            End If
            Err.Number = 0
            ActiveWindow.Close
        End If
    Next
    MsgBox "modificar y guardar txt que están en carpeta", vbInformation, "TERMINADO"
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”
    1. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: ReemplazarTexto
  9. Aceptar.
  10. Para ejecutarla dale click a la imagen.

Saludos. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas