Recibí una llamada de un amigo que quería combinar varios archivos de Excel en un libro de Excel. Tenía muchos archivos en una carpeta y quería reunir todas las hojas de trabajo de todos los libros de trabajo en un solo libro.
Si bien esto se puede hacer manualmente, llevaría mucho tiempo y sería propenso a errores.
Sin embargo, un simple código VBA puede hacer esto en unos segundos.
Combine varios archivos de Excel en un solo archivo
Aquí está el código que puede combinar varios libros de Excel en una carpeta específica en un solo libro de Excel:
Sub ConslidateWorkbooks () 'Creado por Sumit Bansal de https://trumpexcel.com Dim FolderPath como cadena Dim Nombre de archivo como cadena Dim Hoja como hoja de trabajo Application.ScreenUpdating = False FolderPath = Environ ("perfil de usuario") & "DesktopTest" Nombre de archivo = Dir ( FolderPath & "* .xls *") Do While Filename "" Workbooks.Open Filename: = FolderPath & Filename, ReadOnly: = True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After: = ThisWorkbook.Sheets (1) Siguiente hoja de libros de trabajo (Nombre de archivo) .Close Filename = Dir () Loop Application.ScreenUpdating = True End Sub
¿Cómo utilizar este código?
Estos son los pasos para usar este código:
- Coloque todos los archivos de Excel que desee combinar en una carpeta. Para el propósito de este tutorial, he creado una carpeta llamada Prueba y tengo seis archivos en ella (4 libros de Excel y 1 Power Point y Word cada uno).
- Abra un nuevo libro de Excel.
- Presione ALT + F11 (o vaya a Desarrollador -> Código -> Visual Basic). Esto abrirá el Editor de Visual Basic.
- En el Editor de VB, en el Editor de proyectos, haga clic con el botón derecho en cualquiera de los objetos del libro de trabajo y vaya a Insertar -> Módulo. Esto insertará un módulo para el libro de trabajo.
- Haga doble clic en el módulo. Abrirá la ventana de código a la derecha.
- Copie y pegue el código anterior en la ventana de código.
- En el código, debe cambiar la siguiente línea de código:
FolderPath = Environ ("perfil de usuario") & "Prueba de escritorio"
En esta línea, cambie la parte entre comillas dobles (resaltada en naranja) con la ubicación de la carpeta en la que tiene los archivos que desea combinar. En el código utilizado anteriormente, la carpeta está en el escritorio. En caso de que lo tenga en otra ubicación, especifique esa ruta aquí.
- Coloque el cursor en cualquier lugar del código y haga clic en el botón de reproducción verde en las opciones de la barra de herramientas (o presione la tecla F5).
Esto ejecutará el código y todas las hojas de trabajo de todos los archivos de Excel en la carpeta se consolidarán en un solo libro de trabajo.
¿Cómo funciona este código?
- El código usa la función DIR para obtener los nombres de los archivos de la carpeta especificada.
- La siguiente línea asigna el primer nombre de archivo de Excel a la variable "Nombre de archivo".
Nombre de archivo = Dir (FolderPath & "* .xls *") - Luego, el ciclo Do While se usa para verificar si se han cubierto todos los archivos.
- Dentro del ciclo "Do While", el ciclo "For Each" se utiliza para copiar todas las hojas de trabajo al libro de trabajo en el que estamos ejecutando el código.
- Al final del Do Loop, se usa la siguiente línea de código: Filename = Dir (). Asigna el siguiente nombre de archivo de Excel a la variable Nombre de archivo y el ciclo comienza de nuevo.
- Cuando todos los archivos están cubiertos, la función DIR devuelve una cadena vacía, que es cuando termina el ciclo.
Aquí hay una explicación de la función DIR en la biblioteca de MSDN:
Dir devuelve el primer nombre de archivo que coincide con el nombre de la ruta. Para obtener cualquier nombre de archivo adicional que coincida con el nombre de la ruta, llame Dir de nuevo sin argumentos. Cuando no coincidan más nombres de archivos, Dir devuelve una cadena de longitud cero ("").
¿Alguna vez has probado algo de este tipo usando VBA? Comparta lo que hizo y todos podemos aprender de ello.
Ahorre una gran cantidad de tiempo usando VBA. Revisar la CURSO Excel VBA.