Stránka 1 z 2
Excel velikost souboru
Napsal: 24 říj 2008 19:56
od atari
Vytvořil jsem soubor v Excelu s makry, a měl cca 500kB. Když vše vymažu (makra, listy) a zbyde jeden prázdný list, tak soubor má pořád přes 200kb. (Přitom nový prázdny soubor má 7kB.) Jak to lze zmenšit o tech 200kB, nebo vyčistit?
Potřeboval bych ten puvodní soubor aby se o tech 200kB zmenšil z 500 na cca 300kB.
Re: Excel velikost souboru
Napsal: 24 říj 2008 20:38
od mike007
Vítej na PC-HelpTady máš makro, které používám na redukci sešitů. Třeba ti pomůže.
Kód: Vybrat vše
Option Explicit
Sub redukce()
Dim j As Long
Dim k As Long
Dim LastRow As Long
Dim LastCol As Long
Dim ColFormula As Range
Dim RowFormula As Range
Dim ColValue As Range
Dim RowValue As Range
Dim Shp As Shape
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For Each ws In Worksheets
With ws
On Error Resume Next
Set ColFormula = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
Set ColValue = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
Set RowFormula = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
Set RowValue = .Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
On Error Goto 0
If ColFormula Is Nothing Then
LastCol = 0
Else
LastCol = ColFormula.Column
End If
If Not ColValue Is Nothing Then
LastCol = Application.WorksheetFunction.Max(LastCol, ColValue.Column)
End If
If RowFormula Is Nothing Then
LastRow = 0
Else
LastRow = RowFormula.Row
End If
If Not RowValue Is Nothing Then
LastRow = Application.WorksheetFunction.Max(LastRow, RowValue.Row)
End If
For Each Shp In .Shapes
j = 0
k = 0
On Error Resume Next
j = Shp.TopLeftCell.Row
k = Shp.TopLeftCell.Column
On Error Goto 0
If j > 0 And k > 0 Then
Do Until .Cells(j, k).Top > Shp.Top + Shp.Height
j = j + 1
Loop
If j > LastRow Then
LastRow = j
End If
Do Until .Cells(j, k).Left > Shp.Left + Shp.Width
k = k + 1
Loop
If k > LastCol Then
LastCol = k
End If
End If
Next
.Range(Cells(1, LastCol + 1).Address & ":IV65536").Delete
.Range(Cells(LastRow + 1, 1).Address & ":IV65536").Delete
End With
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Zredukovat svůj sešit můžeš ještě víc, když vymažeš vzorce (převést data na hodnoty), vymažeš formáty, barvy záložek, atd.
Vysvětli mi ale, proč se snažíš zmenšit sešit o velikosti 500Kb. Neřeknu kdyby měl několik Mb, ale tohle ...
Re: Excel velikost souboru
Napsal: 25 říj 2008 00:09
od atari
Jde o to, že tech souborů budou spousty (stovky) a potřebuji je přenášet a pracovat s nima. Takže chci mít co nejmennší objem dat.
Tenhle návod nepomohl. Asi jsme si nerozuměli. Vytvořil jsem uplně nový sešit, a z toho 500kB sešitu jsem ručně, otrocky překopíroval všechny makra a data do nového, a ten nový soubor měl jenom 143kB. Takže mám dva sešity, v obouch ty samé data, ale ten první je 2,5x větší (500kB versus 143kB). Je v něm někde "něco skrytého" a to jsem chtěl vyčistit. A vzniká to tím, že s tím sešitem dlouho pracuji (mažu, přidávám, zase mažu, atd) a soubor bobtná a bobtná (ale objem dat v jednotlivých listech je pořád stejný) a já nevím proč.
Re: Excel velikost souboru
Napsal: 25 říj 2008 06:41
od mike007
Vyzkoušej tento freeware prográmek. Údajně umí zmenšit velikost sešitu až o 70%. Nechce se mi tomu moc dvakrát věřit, ale za test nic nedáš. Dej vědět.
http://www.vbusers.com/downloads/download.asp#item2
Re: Excel velikost souboru
Napsal: 25 říj 2008 12:37
od atari
Tak jsem ten program zkoušel a neubral ani byte....

Re: Excel velikost souboru
Napsal: 25 říj 2008 13:12
od warcraftan
doporucuju si koupit vetsi Disk kdyz te nejakych 500KBk zabije
lol...
Re: Excel velikost souboru
Napsal: 25 říj 2008 13:56
od atari
Nejde o velikost disku, ale jde mi o to vyřešit proč má soubor 500kB když by měl mít 140kB v Excelu. Je tam nějaký "neviditelný balast" a chci ho odstranit. Když otevřu 10 těchto souborů po 500kB, tak už to zpomaluje docela PC, než kdyby by ty soubory měly 140kB každý.
Re: Excel velikost souboru
Napsal: 25 říj 2008 15:33
od X
Sám mám jeden soubor v Excelu a má pár desítek MB. Jestli ti to tak vadí, použij:
NXPowerLite 3.6-pro redukci velikosti souborů PowerPoint, Word a Excel. Provádí kompresi grafiky a vložených dokumentů.msi
Re: Excel velikost souboru
Napsal: 25 říj 2008 17:05
od mike007
atari píše:Tak jsem ten program zkoušel a neubral ani byte....

Myslel jsem si to

Re: Excel velikost souboru
Napsal: 27 říj 2008 18:49
od JarZa
Kam skočí kurzor, když po sobě zmáčkneš klávesy {End} a {Home} ?
Excel si urputně pamatuje poslední buňku na listu, kde původně byla nějaká data nebo formáty. I když vymažeš řádky/sloupce, nepomůže to.
U mě zabírá následující finta - v editoru Visual Basic je podokno Immediate, do něj napiš příkaz
p = ActiveSheet.UsedRange
a zmáčkni Enter. Odkaz na poslední buňku na listu se tímto "zresetuje" a velikost souboru se zmenší.
Viz přiložený obrázek.
Pokud by to nepomohlo, můžeš ten soubor poskytnout? Podíval bych se na to.
JarZa
Re: Excel velikost souboru
Napsal: 27 říj 2008 20:41
od mike007
JarZa: To sice resetuje. Mimochodem je potřeba zadat jen ActiveSheet.UsedRange, ale to je jedno.
Lepší očistu dělá makro, které jsem tu uvedl v předešlém příspěvku. Jenže co chceš vyčistit v dokumentu, který má pouhopouhých 500kb ... S tím ti nepomůže ani svatej na nebi.
Re: Excel velikost souboru
Napsal: 07 lis 2008 15:00
od Střelec 5

mě zajímalo jak se podaří tento problém eliminovat.
Mám ten samý problém.
Používáme s kolegy excel 2003 sešity s daty a velikost 1ks sešitu je 3,5 MB za jednu výrobní směnu včetně veškerých výrobních dat.
A to opravdu hodně a takové sešity jsou otevřeny 3 ks na jednou a je problém s odrazováním aktuálních data
( PC hlásí to ztrátu virtuální paměti a tak se musí alespoň jeden zavřít ,aby došlo ke správnému zobrazování).
Proto by mě zajímalo jak obsahově zmenšit sešit,aby zůstala plná funkce včetně všech maker.
Pomůže makro od " JarZa ".???