Copiar rangos variables de varios libros y pegarlos en un solo libro en una hoja.

Ante todo gracias por la ayuda.

Tengo 13 libros abiertos, de ellos un libro es el de destino y los otros de origen de datos, necesito que se copie un rango de celdas de cada libro origen desde la hoja actual, el rango va desde la celda E1, el numero de columnas es variable y el numero de filas siempre es 22, de tal manera que en un libro origen de rango puede ser "E1:AZ22", en otro puede ser "E1:BN22", en otro "E1:F22" etc, esto lo determina el numero de columnas donde haya encabezados, este rango debe ir al libro destino en una única hoja empezando desde la celda C1 e ir incrementando el tamaño según los rangos que se vayan pegando como valores. Para esto he hecho la siguiente macro pero me saca un error:

Public Sub PEGAR()
Dim Wb As Workbook
Dim ActualWb As String
ActualWb = ActiveWorkbook.Name
For Each Wb In Workbooks 'bucle que se repite para todos los libros abiertos
If Wb.Name <> ActualWb Then
Windows(Wb.Name).Activate 'activo el libro origen
ActiveSheet.Range("E1").Select 'activo la hoja actual, el libro puede tener muchas hojas
' pero el rango debe ser solo de la hoja donde se abre el libro.
col = ActiveSheet.Range("IV1").End(xlToLeft).Column 'de derecha a izquierda voy a la ultima columna donde hay datos
ActiveSheet.Range("E1", Cells(22, col)).Copy 'en este punto se rompe la macro, trato de copiar el rango de datos
Windows("DATOS.xlsm").Activate 'activo el libro destino
ActiveSheet.Range("A1").Select 'activo la hoja destino
ActiveSheet.Range("A1").End(xlToRight).Select 'desde A1 voy hasta la ultima columna
ActiveCell.Offset(0, 1).Select 'selecciono la siguiente columna para que siga pegando los rangos siguientes
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'pegado especial de valores
Windows(Wb.Name).Close SaveChanges:=False 'Cierro el libro origen
End If
Next Wb
End Sub

Espero me puedan ayudar.

Añade tu respuesta

Haz clic para o