Hojas de importación utilizando Excel VBA
A continuación vamos a ver un programa en Excel VBA que importa hojas de otros archivos de Excel en un archivo de Excel.
Descargar Book4.xlsx, Book5.xlsx y añadirlos a «C: \ test \»
Situación:
Añadir las siguientes líneas de código en el botón de comando:
-
En primer lugar, declaramos dos variables de tipo String, un objeto de hoja y una variable de tipo entero.
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
-
Activar la actualización de pantalla y alertas que muestran.
Application.ScreenUpdating = False Application.DisplayAlerts = False
-
Inicializar el directorio variable. Utilizamos la función Dir para encontrar la primera .xl ?? archivo almacenado en este directorio.
directory = "c:\test\" fileName = Dir(directory & ".xl??")
Nota: (?) La función Dir apoya el uso de múltiples caracteres (*) y el carácter único comodines para buscar todos los diferentes tipos de archivos de Excel.
-
La variable nomArchivo ahora tiene el nombre del primer archivo de Excel que se encuentra en el directorio. Añadir un bucle Do While.
Do While fileName <> "" Loop
Añadir las siguientes líneas de código (a los 5, 6, 7 y 8) para el bucle.
-
No existe una forma sencilla de copiar hojas de cálculo de Excel cerradas.
Por lo tanto, abrimos el archivo de Excel.
Workbooks.Open (directory & fileName)
-
Importe las hojas del archivo de Excel en la importación-sheet.xlsm.
For Each sheet In Workbooks(fileName).Worksheets total = Workbooks("import-sheets.xlsm").Worksheets.count Workbooks(fileName).Worksheets(sheet.Name).Copy _ after:=Workbooks("import-sheets.xlsm").Worksheets(total) Next sheet
Explicación: del total variable guarda un registro del número total de hojas de trabajo de importación-sheet.xlsm. Utilizamos el método de copia del objeto de hoja para copiar cada hoja de trabajo y pegarlo después de la última hoja de la importación-sheets.xlsm.
-
Cierre el archivo de Excel.
Workbooks(fileName).Close
-
La función Dir es una función especial. Para obtener los otros archivos de Excel, puede utilizar la función Dir de nuevo sin argumentos.
fileName = Dir()
Nota: Cuando no hay más nombres de archivo coinciden, la función Dir devuelve una cadena de longitud cero ( «»). Como resultado, Excel VBA dejará el bucle Do While.
-
Encienda la actualización de pantalla y la visualización de alertas de nuevo (fuera del bucle).
Application.ScreenUpdating = True Application.DisplayAlerts = True
Prueba 10. el programa.
Resultado: