Copiar algunos rangos de varios libros de excel a otro libro

He visto tus macros y veo que eres genial realizándolos.

Tengo un problema, con una macro que copie y modifique, la macro fue realizada por ti, pero al parecer no me funciona bien.

* Tengo en una carpeta una carpeta con 20 documento de excel, los mismo son completados por usuarios, estos documentos tienen el mismo formato, la única variante es que lo llenan departamentos diferentes.

*Tengo otro libro de excel que es mi programa general en el cual necesito copiar todos esos 20 documentos. Pero solo necesito los siguientes rangos:

Columna A2:A500 y G2:L500

Ejecuto el macro y me saltan las líneas y en otros casos me copia todo desde la fila 1, el jala la información pero no organizada.

Dejame saber si puedes ayudarme

En espera de su respuesta

Debajo el macro modificado

Sub CopiarRangos()
'Por.Dante Amor
'copia rangos de hojas de libros en un libro
Application.ScreenUpdating = False
Set l1 = ThisWorkbook
l1.Sheets.Add
Set h1 = l1.ActiveSheet
'
Set nav = CreateObject("shell.application")
carp = nav.browseforfolder(0, "SELECCIONA CARPETA", 0, "C:\Users\ctorres\Desktop").items.Item.Path
If carp = "" Then Exit Sub
ChDir carp
'
archi = Dir("*.xls*")
J = 1
Do While archi <> ""
Set l1 = Workbooks.Open(archi)
For Each h In l1.Sheets
h.Range("A2:A200").Copy h1.Range("A2" & J)
J = J + 1
h.Range("G2:L200").Copy h1.Range("G2" & J)
J = J + 1
Next
l1.Close False
archi = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "Hojas concentrados"
End Sub

Respuesta
1

H o l a : Y en dónde quieres pegar la información, todos los rangos en la misma hoja, ¿o cada rango en una hoja diferente?

Te anexo la macro actualizada. Lo que hace es crear una hoja en el libro donde tienes la macro y ahí poner la información del libro1 de la hoja 1, abajo de esa información pone la información del libro 2 de la hoja1, así hasta el último libro que tengas en la carpeta seleccionada.

Sub CopiarRangos()
'Por.Dante Amor
'copia rangos de hojas de libros en un libro
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    l1.Sheets.Add
    Set h1 = l1.ActiveSheet
    '
    rutaini = "C:\Users\ctorres\Desktop"
    'rutaini = "C:\trabajo"
    On Error Resume Next
    Set nav = CreateObject("shell.application")
    carp = nav.browseforfolder(0, "SELECCIONA CARPETA", 0, rutaini).items.Item.Path
    If carp = "" Then Exit Sub
    On Error GoTo 0
    ChDir carp
    '
    archi = Dir("*.xls*")
    j = 2
    Do While archi <> ""
        Set l2 = Workbooks.Open(archi)
        Set h2 = l2.Sheets(1)
        h2.Range("A2:A500, G2:L500").Copy h1.Range("A" & j)
        j = j + 500
        l2.Close False
        archi = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Hojas concentradas"
End Sub

Si no es lo que necesitas, tendrás que especificar exactamente cómo y dónde quieres que se pegue la información.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola Dante,

Muchas gracias por responderme,

Quiero pegar la información en otro libro.

Prueba la macro. Simplemente pon la macro en el libro donde quieres pegar la información.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola Dante,

No elaboré mi pregunta bien, excusame, permíteme la oportunidad de elaborarla nueva vez:

Tengo una carpeta con 20 archivos de excel (los mismos son completados por los diferentes departamentos), de esos 20 libros solo deseo copiar las columna A y de la G a la L (de cada libro que tienen un encabezado en la fila1, el cual no deseo copiarlo). IMportante: (la razón por la que hago el salto de columnas a copiar es porque en la columna B-F tengo información autorellenadas con la función BucarV, que sale al entrar el código en la columna A. si pongo de la B-F halaré un grupo de celdas que solo contiene fórmulas más no información y que no puedo eliminar fácilmente)

Esta información a su vez irá o la quiero pegar a un libro (Dentro de la misma carpeta) llamado consolidado que contiene el mismo formato con el mismo numero de columnas pero que utilizaré para seguir trabajando y completarlo.

La macro que me pasaste ahora me copia las columnas que especifiqué pero no en el mismo orden es decir:

G (de los 20 libros) con G (Libro consolidado) ; H (de los 20 libros) con H (Libro consolidado), así sucesivamente.

Esta era la macro que tenía anteriormente, 

Sub libros()

Application.ScreenUpdating = False
ruta = ("T:\Capacitaciones 2017\2017")
ChDir ruta
archi = Dir("*.xls*")
Set h1 = ThisWorkbook.Sheets("hoja1")
On Error Resume Next
Do While archi <> ""
If InStr(1, archi, "Programa Anual de Capacitacion 2017") = 0 Then
Workbooks.Open archi
If Err.Number = 0 Then
Sheets(1).Select
Range(Range("A2"), ActiveCell.SpecialCells(xlLastCell)).Copy _
h1.Range("A" & h1.Range("A2").SpecialCells(xlLastCell).Row + 1)
Else
Err.Number = 0
End If
Application.DisplayAlerts = False
Workbooks(archi).Close
Application.DisplayAlerts = True
End If
archi = Dir()
Loop

No te preocupes, le seguimos hasta que la macro funcione tal y como la necesitas.

Para elaborar la macro, necesito que seas muy específico con todos los datos:

- En dónde están los 20 libros, nombre carpeta.

- Cómo se llama el libro que va a contener la macro

- Cómo se llama el libro dónde quieres pegar la información

- El libro destino estará abierto

- Nombre de la carpeta del libro destino.

- Nombre de la hoja origen

- Columnas y filas que se van a copiar

- Nombre de la hoja destino

- Columnas y filas donde se va a pegar.

Entre más claro se con ese detalle, más práctico será realizar la macro.


Para continuar valora esta respuesta y crea una nueva pregunta en el tema de microsoft Excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes el detalle.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas