For Each Next Anidada en Excel

Tengo 13 ficheros de excel que me envían esa misma cantidad de sucursales a nivel nacional y que cada uno contiene por lo menos 15 hojas con información y formato similar que mensualmente debo consolidar y resumir en un solo archivo país. Hoy en día abro cada libro y desde cada hoja ejecuto una macro sencilla que extrae la información de la hoja activa y la pega en una hoja consolidada de ese mismo fichero. Me gustaría automatizar todo el proceso para agilizar el trabajo y para ello hice unas pruebas con la instrucción For Each Next con debug. Print del nombre de las hojas a ver si el código era capaz de recorrer e imprimir el nombre de todas las hojas de todos los libros pero no me da los resultados esperados. El código recorre las hojas que contiene la macro dos veces pero no se va a los otros archivos de excel abiertos. El código de prueba es el siguiente y como soy principiante y tengo varios días en eso acudo a ustedes a ver si me pueden ayudar:

Sub RecorerLibros()

Dim Libro As Workbook, Hoja As Worksheet
For Each Libro In Workbooks

For Each Hoja In Worksheets
Debug.Print Hoja.Name
Next
Next
End Sub

El código deberá recorrer todos las hojas de todos los libros y en cada hoja ejecutar la instrucción que se le asigne

2 Respuestas

Respuesta
1

La idea la tienes, solo te falto una pequeñísima cosa:

Sub RecorerLibros()
Dim Libro As Workbook, Hoja As Worksheet
For Each Libro In Workbooks
    For Each Hoja In Libro.Worksheets
        Debug.Print Hoja.Name
    Next
Next
End Sub

Felicidades por el esfuerzo. En serio.

Abraham Valencia

Respuesta
1

Sub IMPRIMIR()
Application.PrintCommunication = True
ActiveSheet.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
Sheets("HOJA1"). PrintOut
Sheets("HOJA2"). PrintOut
Sheets("HOJA3"). PrintOut
Sheets("HOJA4"). PrintOut
End Sub

Donde pondrás el nombre de las hojas que requieras imprimir de forma automática, ahora si deseas alternan entre uno y otro libro deberás utilizar la instrucción ActiveWorkbook

¡Gracias! Hola Jose, muchas gracias por tu apoyo. Abraham me corrigió el código que hice y funciona automáticamente sin agregar el nombre de las hojas. En mi caso son más de 187 hojas. Gracias por tu esfuerzo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas