Macro para copiar celdas de varios libros de una carpeta en un libro nuevo.

He leído muchas preguntas de excel que habéis respondido pero no se me ajusta a lo mio por más que pruebo, porque la mayoría me copian en el excel nuevo la primera Hoja1 entera, una tras otra entera.

Veréis hay varias carpetas que se encuentran libros excel que son albaranes de clientes (hay aproximadamente unos 300 libros excel *.xls en cada carpeta), necesito crear un listado de clientes en un libro nuevo y las celdas que quiero copiar son L9:H9 (que seria el nombre del cliente), E10:L10 (que serian los telefonos, A11:L11 (que seria la dirección) y A12:G12 (que seria la localidad)

Querría que esos rangos los copiara en un libro nuevo en la hoja 1 quedando así:

L9:H9

E:10L10

A11:L11

A12:G12

L9:H9

E:10L10

A11:L11

A12:G12

Volviéndose a repetir sucesivamente según va cogiendo esos datos de cada libro de la carpeta y los va juntado en un único libro.

Espero que me podáis ayudar porque sino me tocara copiar uno por uno más de 2000 archivos excel.

1 Respuesta

Respuesta
1

Ya no entendí el resultado.

Tomas los datos del cliente1 y los pones en las celdas

L9:H9

Luego tomas los datos del cliente2 y los pones en las mismas celdas

L9:H9

Tal vez si pudieras poner una imagen de cómo quieres el resultado.


Te parece, si en la hoja2, pones en la columna A todas las carpetas donde tienes archivos de excel y los quieres agregar, por ejemplo:

En Hoja2

                        1

A            CARPETAS

B    C:\respaldo\clientes\datos1\

C    C:\trabajo\nuevos clientes\

D    ....

Y así pones todas las carpetas, entonces la macro leería una a una cada carpeta, todos los archivos de excel de la carpeta y juntaría los clientes.

Entonces dime lo siguiente:

1. ¿Cómo va a quedar el resultado?

2. ¿Puedes poner las carpetas en la hoja2?

3. En cuál hoja de los libros de excel hay que tomar al cliente, ¿de la primera hoja?

E spero tus comentarios en ese orden.

.

Sal u dos

Ante todo muchas gracias Dante por tomarte interés, al final he unificado todos los archivos en una carpeta que será C:\ALBARANES\

Todos los albaranes (libros excel *.xls) tienen el mismo formato y siempre se encuentran en la Hoja1.

He decidido de nuevo para no crear mucho lio un nuevo rango más general que englobe a todas.

El rango de celdas que quiero extraer son: A9:L12

Quiero extraer de cada libro ese rango y hacer una lista. Así es como seria el albarán:

Y así es como quiero que quede el nuevo libro, extrayendo el rango del celdas (A9:L12) de cada uno de los albaranes y copiándolo en el nuevo libro de esta forma en la Hoja1:

Un saludo y gracias.

Te anexo la macro

Sub Juntar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1") 'hoja donde se va a juntar la información
    h1.Cells.Clear
    ruta = "C:\albaranes\"      'carpeta de archivos
    arch = Dir(ruta & "*.xls*")
    j = 1
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets(1)
        h2.Range("A9:L12").Copy h1.Range("A" & j)
        j = j + 5
        l2.Close False
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

.

R ecuerda valorar la respuesta.

.

Avísame cualquier duda

Hola Dante, ante todo muchas gracias.

He probado la macro, pero simplemente no hace nada. Solo pone Fin.

un saludo,

Tienes todos tus libros en la carpeta "c:\albaranes\"?

¿Todos tus libros tienen extensión de excel .xls, xlsx, xlsm, etc?

Todos los libros, en la primer hoja, ¿tienen información en las celdas A9 a L12?

Sí se encuentran en esa ruta.

Tienen extensión *.xls (office 2003)

Si, todas tienen información en las celdas a9 a l12

Me instale hasta el office 2013 por si fuera el problema al ejecturar la macro, pero ocurre lo mismo.

Un saludo,

Envíame tu archivo resumen con la macro

Envíame uno de los archivo que tienes en la carpeta albaranes

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Andrés Hernández Arenas” y el título de esta pregunta.

Enviado gracias.

Ya hice la prueba con el archivo que me enviaste y sí funciona la macro.

Realiza otra prueba, cambia esta línea, con esta macro, le hice un par de cambios

Sub Juntar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1") 'hoja donde se va a juntar la información
    h1.Cells.Clear
    ruta = "C:\albaranes\"      'carpeta de archivos
    ChDir ruta
    arch = Dir(ruta & "*.xls")
    j = 1
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets(1)
        h2.Range("A9:L12").Copy h1.Range("A" & j)
        j = j + 5
        l2.Close False
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas