Macro para unir varios archivos en uno

Tengo varios archivos(muchos), y quiero concentrarlos en una sola BD; como se podría hacer esto, sin tener que abrir archivo por archivo, copiar la información y pegarla en un archivo concentrador, ya que tengo más de 400 archivos y limitado conocimiento en macros. No se me ocurre que sea de otra forma más que con una macro.

De antemano recibe un cordial agradecimiento por tu interés en ayudarme.

2 Respuestas

Respuesta
5

1. ¿Tus archivos son excel?

2. ¿Tus archivos están en la misma carpeta?

3. ¿Si son de excel cuál o cuáles hojas quieres unir?

4. ¿De la hoja o las hojas a unir cuál es el rango de celdas que se debe considerar?

5. ¿En el libro que va a contener la macro en ese mismo quieres unir los archivos o quieres la unión en uno nuevo?

6. ¿El nuevo archivo es un excel?

Estimado experto, te agradezco tu pronta respuesta.

1.- Los archivos están en excel 97/2003 (xls).

2.-Si podría alojarlos en una sola carpeta.

3.- Aunque el libro tiene 3 hojas solo la hoja1 tiene información.

4.- El rango es variable, pero no tienen más de 1000 registro cada uno.

5.-Puede ser en uno nuevo o ahí mismo.

7.- Sip...¿puede ser .xlsx o tendría que quedar como .xls?

Gracias, y espero haber sido claro a tus cuestionamientos.

Estimado experto, te agradezco tu pronta respuesta.

1.- Los archivos están en excel 97/2003 (xls).

2.-Si podría alojarlos en una sola carpeta.

3.- Aunque el libro tiene 3 hojas solo la hoja1 tiene información.

4.- El rango es variable, pero no tienen más de 1000 registro cada uno.

5.-Puede ser en uno nuevo o ahí mismo.

7.- Sip...¿puede ser .xlsx o tendría que quedar como .xls?

Gracias, y espero haber sido claro a tus cuestionamientos.

Ah, me faltó algo.

El rango que voy a copiar en dónde lo pego, ¿todo en una misma hoja o en hojas diferentes?

Con esta macro copias la primera hoja de cada archivo en una sola hoja.

Pon la macro en un libro y en ese mismo libro te hará el concentrado.

Sub ponernombre()
'Por.DAM
Set l1 = ThisWorkbook
Set h1 = l1.Sheets("concentrado")
h1.Cells.Clear
Application.ScreenUpdating = False
Set nav = CreateObject("shell.application")
    carp = nav.browseforfolder(0, "SELECCIONA CARPETA", 0, "C:\trabajo").items.Item.Path
    If carp = "" Then Exit Sub
    carp = carp & "\"
    ChDir carp
    archi = Dir("*.xls*")
    Do While archi <> ""
        Workbooks.Open archi
        uf = ActiveCell.SpecialCells(xlLastCell).Row
        uc = ActiveCell.SpecialCells(xlLastCell).Column
        u = h1.Range("A1").SpecialCells(xlLastCell).Row + 1
        Range(Cells(1, 1), Cells(uf, uc)).Copy h1.Range("A" & u)
        ActiveWorkbook.Close
        archi = Dir()
    Loop
    MsgBox "Archivos concentrados", vbInformation, "UNIR ARCHIVOS EN UNA HOJA"
End Sub

Si el rango todo en una misma hoja, donde termina un archivo abajo empieza el siguiente y así. Permíteme hacer una prueba antes de puntuar y cerrar la pregunta. Puse el archivo para concentrar en una carpeta y en esa misma metí los archivos para concentrar. Ya pegué la macro y cambié el nombre de la hoja1 por "concentrado". La macro se ejecuta pero se detiene en...Range(Cells(1, 1), Cells(uf, uc)).Copy h1.Range("A" & u)...Si quieres te puedo enviar algunos archivos para que pruebes. Gracias

Pon el archivo en otra carpeta diferente a donde tienes todos los archivos

Dime que mensaje de error te aparece

Increíble, como es posible que con unas cuantas líneas de código se pueda reducir tanto el trabajo, excelente aporte. Encantado y muchísimas gracias DAM.

Respuesta
1

Hola Dante Amor el código que esta aquí me funciona bien, pero cuando lo ejecuto nuevamente me borra la información importada anteriormente e inicia a copiar desde +1 de la información que borro. Es decir, si importohasta a1000, lo ejecuto nuevamente y me borra hasta a1000 y copia desde A1001. ¿Dónde debo modificar para que copie siempre desde A1?

Quise decir que pega hasta a1000 y al ejecutar nuevamente, borra hasta a1000 y comienza a PEGAR a partir de A1001. ¿Qué debo hacer para que siempre PEGUE a partir de A1?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas