A continuación, veremos un programa en Excel VBA que importa hojas de otros archivos de Excel a un archivo de Excel .

Descargue Book4.xlsx, Book5.xlsx y agréguelos a "C: test "

Situación:

Importar hojas usando Excel VBA

Agregue las siguientes líneas de código al botón de comando:

1. Primero, declaramos dos variables de tipo String, un objeto Worksheet y una variable de tipo Integer.

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

2. Desactive la actualización de la pantalla y la visualización de alertas.

Application.ScreenUpdating = False
Application.DisplayAlerts = False

3. Inicialice el directorio de variables. Usamos la función Dir para encontrar el primer * .xl ?? archivo almacenado en este directorio.

directory = "c:test"
fileName = Dir(directory & "*.xl??")

Nota: La función Dir admite el uso de comodines de caracteres múltiples (*) y caracteres únicos (?) Para buscar todos los tipos diferentes de archivos de Excel.

4. La variable fileName ahora contiene el nombre del primer archivo de Excel que se encuentra en el directorio. Agregue un bucle Do While .

Do While fileName <> ""

Loop

Agregue las siguientes líneas de código (en 5, 6, 7 y 8) al ciclo.

5. No existe una forma sencilla de copiar hojas de trabajo de archivos de Excel cerrados. Por lo tanto, abrimos el archivo de Excel.

Workbooks.Open (directory & fileName)

6. Importe las hojas del archivo de Excel a import-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: la variable total mantiene un registro del número total de hojas de trabajo de import-sheet.xlsm. Usamos el método Copiar del objeto Hoja de trabajo para copiar cada hoja de trabajo y pegarla después de la última hoja de trabajo de import-sheets.xlsm.

7. Cierre el archivo de Excel.

Workbooks(fileName).Close

8. La función Dir es una función especial. Para obtener los otros archivos de Excel, puede usar la función Dir nuevamente sin argumentos.

fileName = Dir()

Nota: cuando no coinciden más nombres de archivo, la función Dir devuelve una cadena de longitud cero (""). Como resultado, Excel VBA dejará el ciclo Do While.

9. Active la actualización de la pantalla y vuelva a mostrar las alertas (fuera del ciclo).

Application.ScreenUpdating = True
Application.DisplayAlerts = True

10. Pruebe el programa.

Resultado:

Resultado de la importación de hojas

7/8 Completado! Más información sobre libros y hojas>
Capítulo siguiente: Objeto de rango