Avatar billede goldeneye Nybegynder
19. december 2006 - 10:04 Der 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?
Avatar billede jkrons Professor
19. december 2006 - 10:32 #1
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.

Excel 2003 kan udnytte op til 1 Gb RAM.
Avatar billede jkrons Professor
19. december 2006 - 10:43 #2
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.
Avatar billede goldeneye Nybegynder
19. december 2006 - 11:16 #3
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.
Avatar billede supertekst Ekspert
21. december 2006 - 09:59 #4
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
Avatar billede jkrons Professor
21. december 2006 - 10:38 #5
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.
Avatar billede goldeneye Nybegynder
13. oktober 2007 - 13:16 #6
Vil du lægge et svar jkrons.
Avatar billede jkrons Professor
13. oktober 2007 - 13:56 #7
Her er et svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB