2017-05-31

Unir todos los ficheros de texto de una carpeta con VBA en Excel

Problema

Deseamos unir y consolidar todos los ficheros de texto guardados en una carpeta en un fichero de texto único. Por ejemplo, como paso previo para importar el mismo en Excel, Access u otros programa.

Solución

El siguiente código unirá todos los ficheros con la extensión txt presentes en la ruta donde se ubica el fichero Excel ThisWorkbook.Path, con independencia del formato, columnas o encabezados. Insertamos un salto de línea vbCrLf delante de cada fichero.

  1. Abrimos el Editor de Microsoft Visual Basic: Alt+F11.
  2. Copiamos la siguiente subrutina en un módulo.
    • Sub Unir_Ficheros()
          Dim t As Single
          t = Timer
              c00 = ThisWorkbook.Path & "\" ' the path
              c01 = Dir(c00 & "*.txt")
                  Do Until c01 = ""
                      c02 = c02 & vbCrLf & CreateObject("scripting.filesystemobject").opentextfile(c00 & c01).readall
                      c01 = Dir
                  Loop
              CreateObject("scripting.filesystemobject").createtextfile(c00 & "nuevo_fichero.txt").write c02
          MsgBox Timer - t
      End Sub
      
  3. Ejecutamos la subrutina, F5.
  4. Aparecerá un cuadro de diálogo mostrando el tiempo de ejecución de la subrutina.
  5. En la carpeta en la que se ubica el Excel se habrá creado un fichero con el nombre: nuevo_fichero.txt.

Referencias

1 comentario:

  1. en que parte puedo modificar que el archivo generado me elimine los renglones en blanco que genera al unificar los txt.

    quedo al pendiente.

    saludos.

    ResponderEliminar

Nube de datos