Considere una situación en la que se encuentra con una cantidad de archivos de Excel a diario y desea un mecanismo rápido que lo ayude a encontrar el recuento de hojas de trabajo presentes en cada libro de trabajo. Si tienes un problema similar, no debes perderte este artículo porque te ayudará mucho.

En este artículo, aprenderemos cómo contar hojas de trabajo en varios archivos con código VBA.

Pregunta: * Necesito una macro que pueda leer una lista de nombres de archivos y devolver el número de hojas de trabajo que están presentes en cada uno de los archivos (este es un mecanismo de auditoría para garantizar que el número correcto de hojas de trabajo esté presente en una serie de archivos creados a través de otro proceso). La macro necesitaría establecer la ruta de la carpeta donde se encuentran los archivos (todos en la misma carpeta), luego ubicar el primer archivo, identificar el recuento de la hoja de trabajo y repetir para el siguiente archivo, etc.

Pensé que podría hacer esto con una fórmula simplemente haciendo referencia a los nombres de los archivos, pero creo que Excel no tiene una fórmula sencilla para los recuentos de hojas de trabajo. ¡Gracias!

Si desea leer la pregunta original, haga clic en aquí

A continuación se muestra la instantánea de los archivos guardados en una carpeta con la extensión .xlsx

img1

Nota: No hay archivos protegidos con contraseña.

Para obtener el código, debemos seguir los pasos a continuación para iniciar el editor de VB:

Haga clic en la pestaña Desarrollador Desde el grupo Código, seleccione Visual Basic

img2

  • Copie el siguiente código en el módulo estándar

Sub ListSheetCounts()

Dim Cell        As Range

Dim Conn        As Object

Dim Cat         As Object

Dim ConnStr     As String

Dim n           As Long

Dim Rng         As Range

Dim RngEnd      As Range

Dim WkbPath     As Variant

Dim Wks         As Worksheet



' Folder path where the workbooks are located.

WkbPath = "C:\Users\Test"



' Name of worksheet with the workbook list.

Set Wks = Worksheets("Sheet1")



' Starting cell of workbook list.

Set Rng = Wks.Range("A2")



' Get the range of cells in the workbook name list.

Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp)

If RngEnd.Row >= Rng.Row Then Set Rng = Wks.Range(Rng, RngEnd)



' Create the needed ADO objects fro this macro.

Set Conn = CreateObject("ADODB.Connection")

Set Cat = CreateObject("ADOX.Catalog")



' Add a final backslash the path if needed.

WkbPath = IIf(Right(WkbPath, 1) <> "\", WkbPath & "\", WkbPath)



' Step through each cell in the workbook list.

For Each Cell In Rng



' Get the worksheet count for the workbook.

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _

& WkbPath & Cell _

& ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;"""

Conn.Open ConnStr



Set Cat.ActiveConnection = Conn



' Copy the count to the cell one column to right of the workbook name in the list.

Cell.Offset(n, 1) = Cat.Tables.Count



Conn.Close



Next Cell



' Clean up.

Set Cat = Nothing

Set Conn = Nothing

End Sub

imagen: https: //www.office-skill.site/images/wp-content-uploads-2015-07-img37.png [img3, ancho = 796, alto = 490]

===

img4

  • Mientras ejecutamos la macro, obtendremos el número de hojas de trabajo. Consulte la siguiente instantánea:

img5

Nota: la macro anterior funcionará para la extensión .xlsx y .xls y no para la extensión habilitada para macros .xlsm.

Todos los archivos anteriores tienen la extensión .xlsx Permítanos agregar una hoja de Excel ficticia, es decir, la Hoja 10 En caso de que tengamos un archivo con el mismo nombre con extensiones .xlsx y .xls, debemos mencionar el nombre del archivo con sus respectivas extensiones bien en nuestro archivo de prueba (columna A) para que la macro pueda identificar el archivo al que nos referimos y darnos el resultado correcto Si no hemos mencionado o no hemos mencionado la extensión del archivo con el mismo nombre, entonces la macro dará usamos el recuento de la extensión .xlsx. Consulte la siguiente instantánea:

img6

  • Para obtener el número de hojas para la Hoja 10 con extensiones .xlsx y .xls, debemos mencionar el nombre del archivo con sus respectivas extensiones. La instantánea de la salida final se muestra a continuación:

img7

Conclusión: Al usar el código de macro anterior, podemos contar el número de hojas de trabajo en varios archivos y, si es necesario, para obtener el resultado personalizado, podemos modificar un poco el código VBA.

rar icon

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]