¿cómo combinar varios libros de excel usando vba?
Para combinar varios libros de Excel, necesita usar algún código que le permita elegir qué archivos desea combinar o puede consultar una ubicación de ruta particular y combinar todos los archivos de Excel en el libro actual.
VBA combina varios libros de trabajo
Puede usar el siguiente código que usa la ubicación que mencioné en la variable de ruta (una carpeta en el escritorio de mi sistema).
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop
Pasos para combinar archivos de Excel usando VBA
- Abra el Editor de Visual Basic (asegúrese de habilitar la pestaña Desarrollador si ya la tiene en la cinta).
- Después de eso, ubique el libro de trabajo actual desde la ventana del proyecto (control + r) e inserte un nuevo módulo en él.
- Tendrás una ventana de código en el módulo (haz doble clic en él) donde deberás pegar el código que tienes (tal cual).
- Desde aquí, debe cambiar el valor de la variable de ruta con la ubicación de la carpeta donde se encuentran todos los archivos de Excel que desea combinar.
- Al final, ejecute el código y obtendrá todas las hojas de trabajo del libro en el archivo actual.
Enlaces útiles: Ejecutar una macro – Grabador de macros – Editor de Visual Basic – Manual de macros personales
Este código abre cada archivo uno por uno, copia cada hoja de trabajo una por una y las pega en el archivo actual con el mismo nombre. Aquí está el mismo código pero con la pantalla actualizándose a falso al principio para ejecutar todo en el backend.
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop Application.ScreenUpdating = True End Sub
Nota: Si desea aprender cómo combinar datos de varios libros de trabajo en una sola tabla, asegúrese de consultar esta guía.