2013-05-03

Unir ficheros de texto con VBA Excel

En ocasiones necesitamos unir varios ficheros de texto (.txt o .csv). Por ejemplo, para consolidar dos ficheros descargados en distintos momentos.

Modificamos un ejemplo publicado por Jim Rech en google groups. Hemos transformado la referencias absolutas en relativas. Tan sólo hay que copiar el código en un módulo de Excel y guardar el fichero si es nuevo (o devolvería error pues la propiedad Application.ThisWorkbook.Path está vacía hasta que no se guarda el fichero).

Copiamos los dos ficheros (.txt o .csv) que deseamos unir, Fichero1 y Fichero2, en la misma ruta del Excel con el código. En esa ruta se creará el Fichero3 de salida, con la unión del 1 y el 2, y se sobreescribirá si ya existe.
Sub UnirFicherosTexto()
  
    Dim r As String
    r = Application.ThisWorkbook.Path
    Dim SrcFiles, CurrSrc As String
    Dim DestFile As String, Counter As Integer
    Dim TextLine As String
    SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt")
    Open r & "\Fichero3.txt" For Output As #1
    For Counter = 0 To UBound(SrcFiles)
        Open SrcFiles(Counter) For Input As #2
        Do While Not EOF(2)
            Line Input #2, TextLine
            Print #1, TextLine
        Loop
        Close #2
    Next
    Close #1
    
End Sub
Para unir más de dos ficheros, los añadimos en el Array.
SrcFiles = Array(r & "\Fichero1.txt", r & "\Fichero2.txt", r & "\Fichero3.txt")

Entradas relacionadas

3 comentarios:

  1. Me alegro de que lo encuentres útil. Saludos.

    ResponderEliminar
  2. Una duda, y si tengo n número de ficheros en mi carpeta ?
    Sucede que no sé cuántos pueden llegar en un día, como pueden ser 2 como pueden ser 30, que modificación se podría realizar ?

    ResponderEliminar
    Respuestas
    1. Hay otra entrada dedicada a ello: https://nubededatos.blogspot.com/2017/05/unir-todos-los-ficheros-de-texto-de-una.html

      Eliminar

Nube de datos