Finne størrelsen på individuelle regneark

Maarten lurer på om det er en måte å finne ut størrelsen på hvert regneark i en arbeidsbok. Han har en arbeidsbok med nesten 100 regneark og han ønsker å redusere størrelsen på arbeidsboken fil. Men han vet ikke hvilke regneark som er de som er størst i størrelse.

Finne ut av "size" av individuelle regneark, avhenger i stor grad på hva som menes med "størrelse". Betyr det antall celler brukt? Kolonner og rader brukt? Hvor mye tekst lagres i regnearket? Listen over beregninger kunne gå videre og videre.

Problemet er at spørsmål som disse bomme på målet; et regneark kan ha mange, mange elementer som er lagret på den. For eksempel kan det inneholde kommentarer, formler, tekst, diagrammer, lydfiler, og en rekke andre elementer. Ett diagram kan være større enn en annen i form av antall celler, men den andre kan være større i form av gjenstander (for eksempel diagrammer eller pivottabeller).

Den eneste virkelige måten å sammenligne relative størrelser av regneark er å spare hvert regneark ut i sin egen arbeidsbok og deretter undersøke størrelsen på hver fører arbeidsbok. Dette åpenbart ikke svarer nøyaktig hvor stor hver enkelt regneark er fordi det handler om å spare en arbeidsbok introduserer ekstra overhead til den lagrede filen. Men hvis hvert regneark lagres på samme måte, vil hver og en ha sammenlign overhead og dermed kan sammenlignes med hverandre for å se noe som er større.

Følgende makro legger et regneark til gjeldende arbeidsbok for å registrere størrelsene på hver arbeidsbok opprettet. Det skritt så gjennom hvert regneark og lagrer det i en individuell arbeidsbok. Størrelsen på arbeidsboken er da bestemt, innspilt, og den nye arbeidsboken slettet.

Sub WorksheetSizes ()
Dim wks Som regneark
Dim c Som 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

"Legg til nytt regneark for å registrere størrelser
On Error Resume Next
Set wks = Regneark (sReport)
Hvis wks Er Ingenting Deretter
Med ThisWorkbook.Worksheets.Add (Før: = Regneark (1))
.name = SReport
.Range ("A1"). Value = "regneark Name"
.Range ("B1"). Verdi = "Omtrentlig størrelse"
Avslutt med
End If
On Error GoTo 0
Med ThisWorkbook.Worksheets (sReport)
.Velg
.Range ("A1"). CurrentRegion.Offset (1, 0) .ClearContents
Set c = .Range ("A2")
Avslutt med

Application.ScreenUpdating = False
'Loop gjennom regneark
For hver wks I ActiveWorkbook.Worksheets
Hvis wks.Name <> sReport Deretter
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
Neste wks
Application.ScreenUpdating = True
End Sub

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (11112) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Finne størrelsen på individuelle regneark.