Стівен з Австралії пише:
Я створив макрос VBA, який повинен створити близько 50 діаграм з одного аркуша. Проблема полягає в тому, що кожного разу, коли я запускаю програму, коли потрапляю до 33-ї діаграми, повідомлення про помилку відображає повідомлення "Недостатньо пам'яті", тоді програма Excel блокується, і мені доводиться припиняти програму. У мене на ПК 256 МОГ оперативної пам'яті, і я використовую Excel 97 в операційній системі Windows NT.
Ви створюєте кожну діаграму як свій власний аркуш діаграм? Excel може обробляти 16 мільйонів комірок на аркуші, але тихий секрет полягає в тому, що він не може обробляти велику кількість аркушів. У файлі довідки сказано, що кількість робочих аркушів обмежена "доступною пам'яттю".
Я регулярно стикаюся з вашою проблемою. Це жахливо розчаровує, бо ніколи не знаєш, коли ось-ось розбиється. Якщо Visual Basic видасть помилку, яку можна зафіксувати, ви можете зупинити макрос, зберегти файл і розпочати з нового файлу. Але вони цього не роблять - ви просто отримуєте аварію.
Я бачив, як збій траплявся аж до 130 робочих аркушів і вже до 40. Ви повинні визначити, де воно має відбутися у вашій системі, а потім поставити лічильник у макрос. Якщо ви думаєте, що після 32 діаграм ви зірветься, зупиніть процес на 30 діаграмах, збережіть їх у новій книзі, закрийте книгу та почніть створювати їх знову в новій книзі.
Це не красиво, але це єдиний обхідний шлях, який я знайшов.
Ще одна думка - переконайтеся, що ви закрили кожен модуль та форму користувача в редакторі Visual Basic, використовуючи "X" у верхньому правому куті. Я виявив, що простим закриттям усіх компонентів у Visual Basic перед запуском макросу ви можете звільнити трохи більше пам'яті і, можливо, втиснути ще кілька діаграм у "доступну пам'ять".
Вище я говорив про те, щоб робити речі для збереження пам’яті. Сьогодні Стівен відповів чудовим відкриттям:
Я виявив, що якщо встановити для діаграм AutoScaleFont значення False, я можу створити близько 120 діаграм, що вирішило мою проблему.
Чому це так, я поняття не маю, але це Excel. Відмінна порада - заправте цей як незрозумілий метод збереження пам’яті.