Att hitta storleken på enskilda kalkylblad

November 16

Maarten undrar om det finns ett sätt att ta reda på storleken på varje kalkylblad i en arbetsbok. Han har en arbetsbok med nästan 100 kalkylblad och han vill minska storleken på arbetsboken filen. Däremot vet han inte vilka kalkylblad är de största i storlek.

Räkna ut den "storleken" på enskilda kalkylblad beror till stor del på vad som menas med "storlek." Betyder det att antalet celler som används? De kolumner och rader som används? Hur mycket text lagras i kalkylblad? Listan över mätetal kunde gå på och.

Problemet är att frågor som dessa missar märket; ett kalkylblad kan ha många, många objekt som lagras på den. Till exempel skulle den innehålla kommentarer, formler, text, diagram, ljudfiler, och ett antal andra punkter. En diagrammet kan vara större än en annan när det gäller antal celler, men den andra kan vara större i termer av objekt (t.ex. tabeller eller pivottabeller).

Det enda riktiga sättet att jämföra relativa storlekar av kalkylblad är att spara varje kalkylblad ut i sin egen arbetsbok och sedan undersöka storleken på varje resulte arbetsbok. Detta innebär givetvis inte svara exakt hur stor varje enskild kalkylblad beror på att handlingen att spara en arbetsbok introducerar ytterligare omkostnader i den sparade filen. Om emellertid varje kalkylblad sparas på samma sätt kommer varje en har jämförbar overhead och därmed kan jämföras med varandra för att se vilken som är större.

Följande makro lägger ett kalkylblad till den aktuella arbetsboken för att registrera storlekar av varje arbetsbok skapas. Det steg sedan genom varje kalkylblad och sparar den till en enskild arbetsbok. Storleken av arbetsboken bestäms sedan, spelas in, och den nya arbetsboken raderas.

Sub WorksheetSizes ()
Dim wks As Arbetsblad
Dim c Som Range
Dim sFullFile As String
Dim sReport As String
Dim sWBName As String

sReport = "Size Report"
sWBName = "Radera Me.xls"
sFullFile = ThisWorkbook.Path & _
Application.PathSeparator & sWBName

"Lägg nytt kalkylblad för att spela storlekar
On Error Resume Next
Set wks = Arbetsblad (sReport)
Om wks är ingenting Sedan
Med ThisWorkbook.Worksheets.Add (Före: = Arbetsblad (1))
.name = SReport
.Range ("A1"). Värde = "Blad Namn"
.Range ("B1"). Value = "Ungefärlig storlek"
End Med
End If
On Error GoTo 0
Med ThisWorkbook.Worksheets (sReport)
.Select
.Range ("A1"). CurrentRegion.Offset (1, 0) .ClearContents
Set c = .Range ("A2")
End Med

Application.ScreenUpdating = False
'Gå igenom kalkylblad
För varje veckor i ActiveWorkbook.Worksheets
Om wks.Name <> sReport Därefter
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
Nästa wks
Application.ScreenUpdating = True
End Sub

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (11112) gäller Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Att hitta storleken på enskilda kalkylblad.