Macro para Fusionar varios libros de Excel en uno solo, sin encabezados.

Tengo una macro que me ayuda a compilar la información de varios libros de Excel en uno solo, lo hace abriendo un explorador de Windows, para buscar y seleccionar dos o mas archivos al mismo tiempo, al momento de juntar la información, lo hace con encabezados y en un libro nuevo.

La macro es esta:

Sub Joinbooks()
Dim Hoja As Object

Application.ScreenUpdating = False
Dim X As Variant
X = Application.GetOpenFilename _
("Excel Files (*.xlsx), *.xlsx", 2, "Open Books", , True)
If IsArray(X) Then 

'**(( He tratado de cambiar esta linea para pegar en el libro abierto, en la celda A3, pero no corre ))**
Workbooks.Add
A = ActiveWorkbook.Name

For y = LBound(X) To UBound(X)

Application.StatusBar = "Import Files: " & X(y)
Workbooks.Open X(y)
b = ActiveWorkbook.Name
For Each Hoja In ActiveWorkbook.Sheets
Hoja.Copy after:=Workbooks(A).Sheets(Workbooks(A).Sheets.Count)
Next
Workbooks(b).Close False
Next
Application.StatusBar = "Done"
Call Unir_Hojas
End If
Application.ScreenUpdating = False
End Sub

*********
Sub Unir_Hojas()
Dim Sig As Byte, Eliminar As Boolean
For Sig = 2 To Worksheets.Count
Worksheets(Sig).UsedRange.Copy _
Worksheets(1).Range("a1000000").End(xlUp).Offset(1)
Next
Application.DisplayAlerts = False
For Sig = 2 To Worksheets.Count
Worksheets(2).Delete
Next
Application.DisplayAlerts = True

End Sub

Mi pregunta es la siguiente: ¿Cómo podría hacer que la macro, copie la información de los libros seleccionados "sin encabezados " y la pegue en el libro que tengo abierto (donde corrí la macro)?, la información de los libros coincide en columnas y todos cuentan con un encabezado en la fila 1, la información de estos, siempre coincide en aparecer de la fila 2, hasta "n" numero de fila y se debe pegar en el libro abierto, a partir de la fila 3 columna A.. Hasta "n".

1 Respuesta

Respuesta
1

El cambio lo tienes que hacer en la macro Unir_Hojas.

Te anexo la macro actualizada:

Sub Unir_Hojas()
    Dim Sig As Byte, Eliminar As Boolean
    For Sig = 2 To Worksheets.Count
        u = Worksheets(Sig).UsedRange.Rows(Worksheets(Sig).UsedRange.Rows.Count).Row
        u2 = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
        If u2 < 3 Then u2 = 3
        Worksheets(Sig).Rows("2:" & u).Copy _
            Worksheets(1).Range("A" & u2)
    Next
    Application.DisplayAlerts = False
    For Sig = 2 To Worksheets.Count
        Worksheets(2).Delete
    Next
    Application.DisplayAlerts = True
End Sub

[Si te ayudó la información, no olvides valorar la respuesta.

dante muchas gracias, ya solo le quite:  Workbooks.Add , para que lo corriera sobre el mismo libro. Te agradezco mucho. 

Saludos. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas