Unir varios ficheros de excel en uno solo.

Tengos varios excel con el mismo formato, los datos son similares y quisiera unirlos todos en uno solo, sin tener que copiar y pegar el rango de celdas, pues es bastante grande, ¿es posible?

Respuesta
1

Es posible desarrollar una rutina para automatizar la tarea de copiar y pegar.

Para ello necesitaré algo más de información:

- Cuántas hojas contiene cada fichero y en caso de ser varias, si todas deben ser volcadas en el nuevo libro.

-Si las hojas copiadas se irán agregando como 'hojas' o como datos en la misma hoja para todos los ficheros.

-Si todos los ficheros se encuentran en la misma carpeta, es decir que ya se puede indicar en el mismo código o de alguna manera su ubicación. O si es necesario 'buscar' cada libro en alguna carpeta.

- Una muestra de 1 hoja vendría muy bien para precisar los rangos. Podés subirla en algún sitio y pasarme el link o enviármela al correo que aparece en mi sitio.

¡Gracias! 

Todos los ficheros solo tienen una hoja

Se van agregando como datos en la misma hoja

Todos los ficheros están en la misma carpeta

Te mando un ejemplo al email de cibersoft

Muchísimas gracias

Las aclaraciones fueron en el libro, aquí la macro de ejemplo:

Sub unificaLibros()
'x Elsamatilde
'atajo de teclado: Ctrl u
'trae las hojas de todos los libros de la carpeta indicada en A1
Sheets(1).Select
'se impide el movimiento del cambio de libros
Application.ScreenUpdating = False
'verificamos si el directorio existe
Dire = Range("A1").Value
libro1 = ActiveWorkbook.Name
'si la carpeta existe enviará mensaje
If Dir(Dire, vbDirectory) = "" Then
    MsgBox "No Existe esa carpeta.... verifica y ajusta celda A1.", , "ERROR"
    Exit Sub
End If
'recorre cada archivo del directorio indicado
With CreateObject("scripting.filesystemobject")
    With .GetFolder(Dire)
   'se recorre el conjunto de archivos encontrados
      For Each Archi In .Files
        'abro el libro y copio el total de registros a continuación de la última celda ocupada en col B
        Workbooks.Open (Archi)
        Sheets(1).Range("B2:CK" & Range("B" & Rows.Count).End(xlUp).Row).Copy Destination:=Workbooks(libro1).Sheets(1).Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
        'cierro el libro sin guardar cambios
        ActiveWorkbook.Close False
        'repito con el libro siguiente
      Next
    End With
End With
End Sub

Sdos!

¡Gracias! 

Buenas tardes, Elisa, ya la he probado y sale perfectamente. Te lo agradezco de corazón, me has solucionado mi problema. Muchas gracias.

De nada. Y no quiero dejar de mencionarte que estuve a fin de año en Toledo... Me encantó... Tan parecido a nuestra sierra cordobesa !

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas