Сообщение "Недостаточно памяти" - Советы по Excel

Стивен из Австралии пишет:

Я создал макрос VBA, который должен создать около 50 диаграмм из одного рабочего листа. Проблема в том, что каждый раз, когда я запускаю программу, когда я перехожу к 33-й диаграмме, появляется сообщение об ошибке «Недостаточно памяти», затем программа Excel блокируется, и я должен завершить программу. У меня на компьютере 256 МБ ОЗУ, и я использую Excel 97 в операционной системе Windows NT.

Вы создаете каждую диаграмму как отдельный лист? Excel может обрабатывать 16 миллионов ячеек на листе, но секрет в том, что он не может обрабатывать большое количество листов. В файле справки сказано, что количество листов ограничено «доступной памятью».

Я регулярно сталкиваюсь с вашей проблемой. Это ужасно расстраивает, потому что никогда не знаешь, когда он вот-вот рухнет. Если Visual Basic выдаст ошибку, которую можно перехватить, можно остановить макрос, сохранить файл и начать с нового файла. Но они этого не делают - вы просто попадаете в аварию.

Я видел, что сбой произошел только на 130 рабочих листах и ​​уже на 40. Вы должны определить, где произойдет сбой в вашей системе, а затем поместить счетчик в макрос. Если вы думаете, что произойдет сбой после 32 диаграмм, остановите процесс на 30 диаграммах, сохраните их в новой книге, закройте эту книгу и начните создавать их снова в новой книге.

Это некрасиво, но это единственный обходной путь, который я нашел.

Еще одна мысль - убедитесь, что вы закрываете каждый модуль и пользовательскую форму в редакторе Visual Basic с помощью «X» в правом верхнем углу. Я обнаружил, что, просто закрыв все компоненты в Visual Basic перед запуском макроса, вы можете освободить немного больше памяти и, возможно, втиснуть еще несколько диаграмм в «доступную память».

Выше я говорил о том, как сохранять память. Стивен написал сегодня прекрасное открытие:

Я обнаружил, что если установить для Charts AutoScaleFont значение False, я смогу создать около 120 диаграмм, что решило мою проблему.

Понятия не имею, почему это так, но это Excel. Отличный совет - уберите его как непонятный метод сохранения памяти.

Интересные статьи...