Стивън от Австралия пише:
Създадох макрос VBA, който трябва да създаде около 50 диаграми от един работен лист. Проблемът е, че всеки път, когато стартирам програмата, когато стигна до 33-ата диаграма, съобщение за грешка показва „Няма достатъчно памет“, след това програмата на Excel се заключва и трябва да прекратя програмата. Имам 256Mg RAM в моя компютър и използвам Excel 97 в операционна система Windows NT.
Създавате ли всяка диаграма като свой собствен лист с диаграми? Excel може да обработва 16 милиона клетки на работен лист, но тихата тайна е, че не може да се справи с много работни листове. Файлът за помощ казва, че броят на работните листове е ограничен от „наличната памет“.
Редовно изпитвам проблема, който имате. Това е ужасно разочароващо, защото никога не се знае кога е на път да се срине. Ако Visual Basic ви даде грешка, която можете да приложите, можете да спрете макроса, да запазите файла и да стартирате в нов файл. Но те не го правят - просто получавате катастрофа.
Виждал съм, че сривът се е случил още на 130 работни листа и най-рано на 40. Трябва да прецените къде ще се срине във вашата система, след което да поставите брояч в макроса. Ако мислите, че ще се сринете след 32 диаграми, спрете процеса на 30 диаграми, запазете ги в нова работна книга, затворете тази работна книга и започнете да ги създавате отново в нова работна книга.
Това не е красиво, но е единственото решение, което намерих.
Друга мисъл - не забравяйте да затворите всеки модул и потребителска форма в редактора на Visual Basic, като използвате "X" в горния десен ъгъл. Открих, че като просто затворите всички компоненти в Visual Basic, преди да стартирате макроса, можете да освободите малко повече памет и евентуално да изцедите още няколко диаграми в „наличната памет“.
По-горе говорих за правене на неща за запазване на паметта. Стивън отвърна днес с отлично откритие:
Открих, че ако задам Charts AutoScaleFont на False, мога да създам около 120 диаграми, което е решило проблема ми.
Защо е така, нямам представа, но това е Excel. Отличен съвет - подредете този като неясен метод за запазване на паметта.