19. december 2006 - 10:04Der er
6 kommentarer og 1 løsning
Problemer med kæder og slå.op - Ikke nok hukommelse!!
Har et problem med slå.op funktionen.
Har 2 excel filer, et der laves fakturaer i (størrelse 353 kb), og et med kundedatabasen (størrelse 2457 kb). Jeg vil gerne kunne gemme hver eneste faktura hvor filnavnet skal være fakturanummeret
Det er ikke selve slå.op funktionen der er problemet.
Men jeg kan ikke få referencen mellem filerne til at fungere. Hvis jeg kun åbner faktura arket får jeg fejlen "Ikke nok hukommelse" hvis jeg vil opdatere kæderne. Hvis begge ark er åbne kan jeg ikke gemme den enkelte faktura. I princippet skal jeg først åbne database filen og dernæst faktura filen. Udfylde faktura filen, lukke database filen og så kan jeg gemme faktura filen. Det kan ikke være rigtigt. Kan der virkelig ikke håndteres 2 filer af denne størrelse?
Hvordan kan jeg evt. få database filen til at fylde mindre?
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Nu skriver du ikke hvilken version af Excel, du anvender. I tidligere versioner (før Excel 2003), var der et stort problem med at udnytte den RAM, som man faktisk havde, da Excels egen memory manager, havde nogle indbyggede begræsninger. Disse kom især til udtryk i forbindfelse med brug af meget store regneark, regneark med mange diagrammer, eller regneark med mange links eller links til store filer. Excel 2002 kan således kun udnytte op til 128 MB til formelberegning osv. og det kommer man hurtigt op på, selv om den fil, der linkes til slet ikke er så stor, da alle formler og linkgenberegnes ved hver aktivitet, og det fylder altsammen i hukommelsen.
Der er også andre ting, der influerer på den tilgængelige arbejdshukommelse, fx om du har makrier gemt i person.xls, har installeret tilføjelsesprogrammer så som analysis toolpack, solver e.l. Alle disse tilføjelsesprogrammer er i virkeligheden regneark, der åbner skjult (du kan dog ikke se dem på listen over skjulte ark), og de tager alle plads i den tilgængelige hukommelse.
Hvis du i en celle skirver =INFO("numfile"), får du en indikation af, hvor mange åbne ark, der er. =INFO("brugthuk") kan tilsvarende fortælle dig, hvor meget hukommelse, der er brugt.
Jeg bruger Excel 2000. =INFO("numfile") = 6 =INFO("brugthuk") = 2130800
Der er overhovedet ikke diagrammer i filerne. Faktura filen har 10 slå.op formler, ca. 50 hvis formler og 6 rullegardiner, ikke det vilde. Database filen har slet ingen formler.
En anden mulighed er følgende: Faktura-filen er den eneste, der åbnes. Kundenr. indtastes - data hentes fra kundedatabase-filen og indsættes i faktura.
Ellers senden mail til: pb@supertekst-it.dk - så sender jeg mine fil-modeller.
Koden er følgende i fakturafilen: =================================
Public first As Boolean
Dim xSti, Kxls As Object, antalRæk Dim KundeNavn, KundeAdr, KundePostnr, KundeBy Private Sub worksheet_change(ByVal target As Excel.Range) Dim ræk, kol, kundenr
If first = False Then findSti End If
ræk = target.Row kol = target.Column
If ræk = 2 And kol = 2 Then kundenr = Cells(ræk, kol) findKundedata kundenr
Kxls.Application.Quit Set Kxls = Nothing End If End Sub Private Sub findSti() xSti = ActiveWorkbook.Path If Right(xSti, 1) <> "\" Then xSti = xSti + "\" End If End Sub Private Sub findKundedata(knr) Set Kxls = CreateObject("excel.application")
With Kxls .Workbooks.Open (xSti + "KundeDBase.xls")
If first = False Then antalRæk = .ActiveCell.SpecialCells(xlLastCell).Row End If first = True
FindKundeNr Kxls, knr, antalRæk
If KundeNavn <> "" Then Workbooks("faktura.xls").Sheets(1).Cells(3, 2) = KundeNavn Else MsgBox ("Kundenr. " + CStr(knr) + " ikke fundet!") End If End With End Sub Private Sub FindKundeNr(xls, knr, antalRæk) With xls.Worksheets(1).Range("a1:a" & CStr(antalRæk)) Set c = .Find(knr, LookIn:=xlValues) If Not c Is Nothing Then KundeNavn = xls.Cells(c.Row, 2) Else KundeNavn = "" End If End With End Sub
Hvis du har 10 slå.op formler, der alle slå op i databasen indlæses de 2,4 MB formodentlig 10 gange. Excel selv bruger også en del hukommelse min XL 2003, ca 14MB, jeg husker ikke hvor meget 2000 bruger. Men de 64 MB som Excel kan administrere, kan meget hurtigt få ben at gå på.
Hvis du søger på groups.goole.com efter Excel "Out of Memory" vil du få adskillige hits, der beskriver problemet, og tilsyneladende er den eneste løsning opgradering til en nyere version af Excel.
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.