Stevenas iš Australijos rašo:
Aš sukūriau VBA makrokomandą, kuri turi sukurti apie 50 diagramų iš vieno darbalapio. Problema ta, kad kiekvieną kartą paleidus programą, patekus į 33-ąją diagramą, rodomas klaidos pranešimas „Nepakanka atminties“, tada „Excel“ programa užsiblokuoja ir turiu nutraukti programą. Kompiuteryje turiu 256 mln. RAM atminties ir „Windows NT“ operacinėje sistemoje naudoju „Excel 97“.
Ar kuriate kiekvieną diagramą kaip savo diagramos lapą? „Excel“ gali apdoroti 16 milijonų langelių darbalapyje, tačiau tyli paslaptis yra tai, kad negalima apdoroti daugybės darbalapių. Pagalbos faile rašoma, kad darbalapių skaičių riboja „laisva atmintis“.
Aš nuolat patiriu problemą, kurią turite. Tai siaubingai apmaudu, nes niekada negali žinoti, kada jis netrukus sugrius. Jei „Visual Basic“ suteiktų jums klaidų, galite sustabdyti makrokomandą, išsaugoti failą ir pradėti naudoti naują failą. Bet jie to nedaro - jūs tiesiog patiriate avariją.
Mačiau, kad avarija įvyko net 130 darbalapių ir jau 40. Savo sistemoje turite įvertinti, kur ji užstrigs, tada įdėti skaitiklį į makrokomandą. Jei manote, kad užstrigsite po 32 diagramų, sustabdykite procesą ties 30 diagramų, išsaugokite jas naujoje darbaknygėje, uždarykite tą darbaknygę ir vėl pradėkite kurti naujoje darbaknygėje.
Tai nėra gražu, bet tai yra vienintelis mano surastas sprendimas.
Kita mintis - būtinai uždarykite kiekvieną modulį ir vartotojo formą „Visual Basic“ redaktoriuje naudodami „X“ viršutiniame dešiniajame kampe. Pastebėjau, kad paprasčiausiai uždarius visus „Visual Basic“ komponentus prieš paleidžiant makrokomandą, galite atlaisvinti šiek tiek daugiau atminties ir galbūt išspausti dar keletą diagramų į „laisvą atmintį“.
Aukščiau kalbėjau apie tai, kaip išsaugoti atmintį. Stevenas šiandien parašė atgal su puikiu atradimu:
Radau, kad jei „Charts AutoScaleFont“ nustatysiu kaip „False“, galėčiau sukurti apie 120 diagramų, o tai išspręs mano problemą.
Kodėl taip yra, aš neįsivaizduoju, bet tai yra „Excel“. Puikus patarimas - paslėpkite šį kaip neaiškų atminties išsaugojimo metodą.