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-Help

Tady 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 :huh:

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 ".???