Я использую Excel на AWS EC2, экземпляр R5.4xlarge. Мне нужно вытащить данные в Power Pivot с помощью ползунков с другого листа, содержащего данные для выставления счетов. Это начальное извлечение данных генерирует около 200 000 строк данных. Исходя из этой первоначальной обработки данных, которая занимает около 10 минут, я создаю отчеты, выбирая клиента, для которого мне нужны данные, из их ползунка. Я могу запустить около 14 отчетов, выбрав клиента на его слайдере, но затем Excel дает «недостаточно памяти для выполнения этого действия», он блокируется и должен быть принудительно завершен. Я испробовал все исправления, которые смог найти, исследуя это, но ничего не получалось, включая использование 16 процессоров или машин с оптимизированной памятью. Я думаю, что запуск макроса «save» через vba может помочь очистить память Excel, но я не уверен, как это сделать. Я нашел это предложение в stackoverflow, но он не включил свой код. https://stackoverflow.com/questions/14396998/how-to-clear-memory-to-prevent-out-of-memory-error-in-excel-vba

"Я нашел обходной путь. Сначала казалось, что это займет больше времени, но на самом деле все работает плавнее и быстрее из-за меньшего количества перестановок и большего объема доступной памяти. Это не научный подход, и он требует некоторого тестирования, прежде чем он заработает.

В коде заставьте Excel время от времени сохранять рабочую книгу. Мне пришлось перебрать лист с 360 000 строк, и он сильно задохнулся. После каждых 10 000 я заставлял код сохранять рабочую книгу, и теперь он работает как прелесть даже в 32-битном Excel. Кажется, что Excel в основном очищает память при сохранении книги. Очень похоже на то, что sql удаляет журнал транзакций при фиксации данных. "

Может кто-нибудь подсказать, как я могу ввести этот тип кода и где? И / или вы думаете, это решит мою проблему?

Благодарю.

0