PDA

Показать полную графическую версию : [решено] VBA в EXCEL не освобождается память


navuhodonosor
30-07-2013, 00:04
Доброго времени суток!

В общем проблема такая:

есть текстовый файл в котором 3000000 строк, мне нужно импортировать данные из файла, разбить каждую строку на столбцы (через разделитель) и поместить на листы excel в соответствии с условием;
я читаю файл построчно и запихиваю в 7 динамических массивов по критериям, затем размещаю каждый массив на листе и удаляю массив (erase mas);
но проблема в том, что объем памяти занимаемой excel все равно постоянно увеличивается, хотя после записи каждого массива на лист я сначала удаляю массив, а затем сохраняю книгу целиком, но память от этого не уменьшается, в итоге объем ОЗУ занимаемой EXCEL доходит до 2ГБ, хотя если замерить объем памяти который требуется для хранения заполненных массивов получается меньше 1 ГБ;


Я так понимаю EXCEL держит все данные в памяти. Как бы это обойти?

AlexVol
30-07-2013, 09:35
А обойтись без массивов? Зачем занимать хренову кучу памяти, если все равно разбор идет построчно?

navuhodonosor
30-07-2013, 09:46
Пробовал, исполняется гораздо дольше и ещё ошибка в конце вылетает (ну это не исключаю своей корявости), но в итоге excel в памяти висит также большим куском.
Массивы использую для ускорения вставки в excel когда делаю range()=mymas вставляются данные раз в 10 быстрее чем писать в excel построчно.

Iska
30-07-2013, 13:53
есть текстовый файл в котором 3000000 строк, »
Приведите образец файла в виде первых десятка-двух строк. Приведите Ваш код.

navuhodonosor
11-08-2013, 20:16
Извините, что вышел из темы, просто уезжал на отдых.
Вообщем обошел проблему разбивкой на файлы, т.е. в итоговом файле только один критерий, как выяснилось больше и не надо было. Получилось 7 городов - 7 файлов, в памяти каждый не больше гига.
Спасибо всем.

Iska
12-08-2013, 00:45
С массивными текстовыми файлами желательно работать как с базой данных.




© OSzone.net 2001-2012