Steven iz Australije piše:
Stvorio sam VBA makronaredbu koja mora stvoriti oko 50 grafikona iz jednog radnog lista. Problem je u tome što svaki put kad pokrenem program kada dođem do 33. grafikona, poruka o pogrešci prikazuje "Nema dovoljno memorije", tada se program Excel zaključava i moram prekinuti program. Na računalu imam 256MG RAM-a i koristim Excel 97 u operativnom sustavu Windows NT.
Stvarate li svaki grafikon kao svoj vlastiti list grafikona? Excel može obraditi 16 milijuna stanica na radnom listu, ali tiha je tajna da ne može obraditi puno radnih listova. Datoteka za pomoć kaže da je broj radnih listova ograničen "raspoloživom memorijom".
Ja redovito doživljavam problem koji imate. To je užasno frustrirajuće, jer nikad ne znate kada će se srušiti. Ako bi vam Visual Basic dao pogrešku koja se može ukloniti, možete zaustaviti makronaredbu, spremiti datoteku i započeti u novoj datoteci. Ali nemaju - jednostavno padnete.
Vidio sam da se pad dogodio već na 130 radnih listova i već na 40. Morate procijeniti gdje će se srušiti u vašem sustavu, a zatim staviti brojač u makronaredbu. Ako mislite da ćete se srušiti nakon 32 grafikona, zaustavite postupak na 30 grafikona, spremite ih u novu radnu knjigu, zatvorite tu radnu knjigu i počnite ih ponovno stvarati u novoj radnoj knjizi.
Ovo nije lijepo, ali to je jedino zaobilazno rješenje koje sam pronašao.
Još jedna misao - obavezno zatvorite svaki modul i korisnički obrazac u programu Visual Basic Editor pomoću "X" u gornjem desnom kutu. Otkrio sam da jednostavnim zatvaranjem svih komponenata u Visual Basicu prije pokretanja makronaredbe možete osloboditi malo više memorije i možda stisnuti još nekoliko grafikona u "dostupnu memoriju".
Iznad sam govorio o tome da radim stvari radi očuvanja pamćenja. Steven je danas uzvratio izvrsnim otkrićem:
Otkrio sam da ako postavim Charts AutoScaleFont na False, mogu stvoriti oko 120 grafikona, što je riješilo moj problem.
Zašto je to tako, nemam pojma, ali to je Excel. Izvrsni savjet - ugurajte ovaj kao nejasnu metodu za očuvanje memorije.