27. januar 2020 - 10:16Der er
7 kommentarer og 3 løsninger
Min excel-fil med vba-automatiseringer vokser til 10 gang størrelse
Min excel baserede plan der bruges dagligt af mange brugere er med nogle VBA-automatiseringer, som bl.a. laver et dagligt kopi af sig selv (hvor de kører en SaveCopyAs og generere et unikt navn og dette kopi gemmes i en Backupmappe,. Disse daglige kopier slettes igen efter eksempelvis 30 dage. Med én kopi fra hvert månedsskifte slettes dog ikke, og derfor har jeg kopier liggende fra hvert månedsskifte lang tid tilbage.
Jeg kan se at planen i forhold til 1. okt 2019 er begyndt at stige voldsomt i størrelse, fra normalt at fylde ca. 1 MB nu pludselig er oppe på 10 MB størrelse.
Det jeg mest bekymrer mig om er om filen bliver tungere og tungere at arbejde med, og worstcase bliver uhåndterbar for brugernes PC'er.
jeg mangler nogle fórslag til hvad jeg skal undersøge først, som mulig årsagsopklaring til hvorfor den vokser sig fra 1 - 10 MB i størrelse.
måske er der ro på nu her ved 10 MB, men det er nok lidt tidligt at konkludere det. størrelse den 1.10 var 1MB. den 1.11 fyldte den ca. 7 MB, og fra den 1 dec.ca 11 MB, og efter de daglige kopier at demme ser det ud til at stabilisere sig ved de 11 MB
Grunden til jeg skrev at den kører med VBA-automatiseringer er ikke for at få Jer til at fokusere for meget på dette. Blot for at have så meget info med fra starten.
Spørgsmål til eksperterne: Hvad skal jeg fokusere på i min årsagsopklaring?
En mulighed kan være at slette alle tomme rækker og kolonner inden du gemmer. Har de været i brug optager de plads, også selv om deres indhold er slettet.
Jeg har haft samme problem med en fil på ca. 50 MB der steg til det dobbelte. Jeg skulle rense en fil og manipulere en del data med VBA kodning og dette gjore at den steg i MB. Min løsning var at det færdige resultat via VBA blev kopieret over i et nyt ark som så blev gemt som kopien (ca. 36 MB). Jeg prøvede at REDIM men fik det ikke til at virke tilfredsstillende.
Og planen vedligeholder sig selv vha. VBA-automatiserineg der både tilføjer nye rækker, så planen altid rækker et helt år frem, og gamle rækker slettes også med VBA-automatiosering.
activesheet.usedrange.address denne giver dig 'yderste' punkt.
brug evt. msgbox activesheet.usedrange.address
eller denne
Sub Show_used_ranges()
Dim ws As Worksheet Dim lCount As Long Dim wsTemp As Worksheet Dim rngF As Range Dim lFields As Long Dim strLC As String Dim strSh As String Dim sh As Shape
Application.EnableEvents = False Application.ScreenUpdating = False On Error Resume Next
With wsTemp .Range(.Cells(1, 1), _ .Cells(1, lFields)).Value _ = Array( _ "Sheet Name", _ "Used Range", _ "Range Cells", _ "Shapes", _ "Last Cell") End With
For Each ws In ActiveWorkbook.Worksheets If ws.Name <> wsTemp.Name Then strSh = "" strLC = ws.Cells _ .SpecialCells(xlCellTypeLastCell) _ .Address If ws.Shapes.Count > 0 Then For Each sh In ws.Shapes strSh = strSh & sh.TopLeftCell _ .Address & ", " Next sh strSh = Left(strSh, Len(strSh) - 2) End If
Ja nu har jeg testet med dit forslag div]msgbox activesheet.usedrange.address[/div] og jeg fik udskrevet adresserne på området. msgbox activesheet.usedrange.address Jeg kan se at den yderste celle er den man kommer til hvis man bruger begge scroll-håndtag hhv. helt ud til højte og helt ned.
Marker alle tomme rækker og slet dem. Gentag med kolonner. Det er rækker og kolonner, du skal slette, ikke deres indhold. Gem så og se om ikke det har hjulpet.
Resultatet blev så godt ar vi nu er tilbage på den oprindelige størrelse ca. 1,1 MB, og msgbox activesheet.usedrange.address udskriver netop adresen på det område jeg har aktive data i.
Takker for Jeres engagement og hjælp.
Synes godt om
2 synes godt om dette
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.