A continuación, veremos un programa en Excel VBA que recorre todos los libros y hojas de trabajo cerrados en un directorio y muestra todos los nombres.
Descargue Book1.xlsx, Book2.xlsx, Book3.xlsx, Book4.xlsx y Book5.xlsx y agréguelos a "C: test "
Situación:
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 dos variables de tipo Integer.
Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
2. Para evitar el parpadeo de la pantalla, desactive la actualización de la pantalla.
Application.ScreenUpdating = 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 varios caracteres (*) y de un solo carácter (?) 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, 8 y 9) al ciclo.
5. Inicialice las variables de tipo Integer y agregue el nombre del archivo de Excel a la primera columna de la fila i.
i = i + 1
j = 2
Cells(i, 1) = fileName
6. No existe una forma sencilla de extraer datos (o nombres de hojas) de archivos de Excel cerrados. Por lo tanto, abrimos el archivo de Excel.
Workbooks.Open (directory & fileName)
7. Agregue todos los nombres de las hojas del archivo de Excel a las otras columnas de la fila i.
For Each sheet In Workbooks(fileName).Worksheets
Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name
j = j + 1
Next sheet
8. Cierre el archivo de Excel.
Workbooks(fileName).Close
9. 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.
10. Vuelva a activar la actualización de la pantalla (fuera del bucle).
Application.ScreenUpdating = True
11. Pruebe el programa.
Resultado:
6/8 Completado! Más información sobre libros y hojas>
Capítulo siguiente: Objeto de rango