Trovare la dimensione dei singoli fogli di lavoro (Microsoft Excel)
Maarten si chiede se c’è un modo per scoprire la dimensione di ogni foglio di lavoro in una cartella di lavoro. Ha una cartella di lavoro con quasi 100 fogli di lavoro e desidera ridurre le dimensioni del file della cartella di lavoro. Tuttavia, non sa quali sono i fogli di lavoro di dimensioni maggiori.
La determinazione della “dimensione” dei singoli fogli di lavoro dipende, in gran parte, da cosa si intende per “dimensione”. Significa il numero di celle utilizzate? Le colonne e le righe utilizzate? Quanto testo è memorizzato nel foglio di lavoro? L’elenco delle metriche potrebbe continuare all’infinito.
Il problema è che domande come queste mancano il bersaglio; un foglio di lavoro può contenere molti, molti elementi memorizzati su di esso. Ad esempio, potrebbe contenere commenti, formule, testo, grafici, file audio e un numero qualsiasi di altri elementi. Un grafico potrebbe essere più grande di un altro in termini di numero di celle, ma l’altro potrebbe essere più grande in termini di oggetti (come grafici o tabelle pivot).
L’unico vero modo per confrontare le dimensioni relative dei fogli di lavoro è salvare ogni foglio di lavoro nella propria cartella di lavoro e quindi esaminare le dimensioni di ciascuna cartella di lavoro risultante. Questo ovviamente non risponde esattamente alla dimensione di ogni singolo foglio di lavoro perché l’atto di salvare una cartella di lavoro introduce un sovraccarico aggiuntivo nel file salvato. Tuttavia, se ogni foglio di lavoro viene salvato allo stesso modo, ognuno avrà un overhead comparabile e quindi potrà essere confrontato tra loro per vedere quale è più grande.
La seguente macro aggiunge un foglio di lavoro alla cartella di lavoro corrente per registrare le dimensioni di ogni cartella di lavoro creata. Quindi passa attraverso ogni foglio di lavoro e lo salva in una singola cartella di lavoro. La dimensione della cartella di lavoro viene quindi determinata, registrata e la nuova cartella di lavoro eliminata.
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: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (11113) si applica a Microsoft Excel 2007 e 2010. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: