Není to poprvé, co jsem se setkala se situací, kdy Excelový soubor, který měl předvídatelnou velikost, náhle exponenciálně narostl. Konkrétní problém nastal u dokumentu klienta, o přibližně 400 listech, které obsahovaly jen jednoduchý formulář. Listy mezi sebou nebyly provázány žádnými výpočty.

Sešit takového rozsahu by měl standardně mít velikost okolo 3MB, nicméně náhle, bez zřejmé příčiny, velikost naskočila na 30MB.

Pokud budete hledat praktické příčiny zvětšení velikosti souboru, většinou to bývá:

  1. příliš mnoho formátů (šířky sloupců a výšky řádků, barvy, skryté sloupce a řádky) znatelně mění velikost souboru
  2. používání ve vzorcích odkazy na celé sloupce či řádky
  3. vkládání obrázků do sešitů
  4. udržování vzorců tam, kde by se výsledky daly převést na hodnoty

Také je velmi praktické zjistit, kterou buňku v listu bere Excel jako poslední vyplněnou. Pokud použijete klávesovou zkratku Ctrl + End a ocitnete se tisíce řádků za poslední skutečně vyplněnou buňkou, informace o všech těchto prázdných řádcích velikost souboru zvětší též.

V případě souboru mého klienta nepomohla žádná úprava omezující výše uvedené vlastnosti. Ze zoufalství jsem tedy použila makro, které zkopírovalo postupně formuláře z každého listu do nového souboru 1:1. V zásadě jediný rozdíl mezi starým a novým dokumentem bylo nastavení tisku (okraje a tisková oblast).

Přesto se velikost souboru zmenšila o 90%. Problém vyřešen nebyl, ale byl odstraněn.

Pro případ potřeby zmíněné makro přikládám:

Sub zmensit()
Windows(„stary.xlsx“).Activate
For i = 1 To Sheets.Count
Sheets(i).Select
a = ActiveSheet.Name
Range(„A1:Z80“).Select
Selection.Copy
Windows(„novy.xlsx“).Activate
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Name = a
Sheets.Add After:=ActiveSheet
Windows(„stary.xlsx“).Activate
Next i
End Sub
Záhada skokového zvětšení velikosti souboru v Excelu
Štítky:    

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *