Encontrar el tamaño de hojas de trabajo individuales (Microsoft Excel)
Maarten se pregunta si hay alguna manera de averiguar el tamaño de cada hoja de trabajo en un libro. Tiene un libro de trabajo con casi 100 hojas de trabajo y quiere reducir el tamaño del archivo del libro de trabajo. Sin embargo, no sabe qué hojas de trabajo son las más grandes.
Averiguar el «tamaño» de las hojas de trabajo individuales depende, en gran parte, de lo que se entiende por «tamaño». ¿Significa la cantidad de celdas utilizadas? ¿Las columnas y filas utilizadas? ¿Cuánto texto se almacena en la hoja de trabajo? La lista de métricas podría seguir y seguir.
El problema es que preguntas como estas no dan en el blanco; una hoja de trabajo puede tener muchos, muchos elementos almacenados en ella. Por ejemplo, podría contener comentarios, fórmulas, texto, gráficos, archivos de sonido y cualquier número de otros elementos. Un gráfico puede ser más grande que otro en términos de número de celdas, pero el otro puede ser más grande en términos de objetos (como gráficos o tablas dinámicas).
La única forma real de comparar tamaños relativos de hojas de trabajo es guardar cada hoja de trabajo en su propio libro de trabajo y luego examinar el tamaño de cada libro de trabajo resultante. Obviamente, esto no responde con precisión al tamaño de cada hoja de trabajo individual porque el acto de guardar un libro de trabajo introduce una sobrecarga adicional en el archivo guardado. Sin embargo, si cada hoja de trabajo se guarda de la misma manera, cada una tendrá una sobrecarga comparable y, por lo tanto, se pueden comparar entre sí para ver cuál es más grande.
La siguiente macro agrega una hoja de trabajo al libro de trabajo actual para registrar los tamaños de cada libro de trabajo creado. Luego recorre cada hoja de trabajo y la guarda en un libro de trabajo individual. A continuación, se determina, registra el tamaño del libro de trabajo y se elimina el nuevo libro de trabajo.
Sub WorksheetSizes() Dim wks As Worksheet Dim c As Range Dim sFullFile As String Dim sReport As String Dim sWBName As String sReport = "Size Report" sWBName = "Erase Me.xls" sFullFile = ThisWorkbook.Path & _ Application.PathSeparator & sWBName ' Add new worksheet to record sizes On Error Resume Next Set wks = Worksheets(sReport) If wks Is Nothing Then With ThisWorkbook.Worksheets.Add(Before:=Worksheets(1)) .Name = sReport .Range("A1").Value = "Worksheet Name" .Range("B1").Value = "Approximate Size" End With End If On Error GoTo 0 With ThisWorkbook.Worksheets(sReport) .Select .Range("A1").CurrentRegion.Offset(1, 0).ClearContents Set c = .Range("A2") End With Application.ScreenUpdating = False ' Loop through worksheets For Each wks In ActiveWorkbook.Worksheets If wks.Name <> sReport Then wks.Copy Application.DisplayAlerts = False ActiveWorkbook.SaveAs sFullFile ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = True c.Offset(0, 0).Value = wks.Name c.Offset(0, 1).Value = FileLen(sFullFile) Set c = c.Offset(1, 0) Kill sFullFile End If Next wks Application.ScreenUpdating = True End Sub
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (11113) se aplica a Microsoft Excel 2007 y 2010. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Finding_the_Size_of_Individual_Worksheets [Encontrar el tamaño de las hojas de trabajo individuales]
.