Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2016, 10:42   #1
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию Огромная проблема памяти ексель

Здравствуйте,

Я уже всю голову сломал, опишу проблему самым простым способом:

Есть Пустой файл ексекль, встаю в ячейку А1 ввожу туда любую информацию пусть будет "1000". Протягиваю эту ячекй в право к примеру до ячейки Z1.

Открываю диспетчер задач и смотрю память, которую занимает Ексель, грубо 10 Мб, то есть все нормально.

Теперь! Тяну строку A1 - Z1 вниз к примеру на 1000 строк вниз. Смотрю занимаемую память, грубо - 20 Мб. Вроде пока ок.

Протягиваю еще далее вниз к примеру уже на 100 тыщ строк вниз, смотрю заполненную память ексель, грубо - 500 Мб. Естесвенно иформации много и из за этого память занимаеться больше.

Но!! теперь самое интересно, всю эту информацию удаляю!
Смотрю память ексель - она остается такой же +/- несколько мегабайт.

Если повторить всю туже операцию, по окончани второй операции память будет уже занимать 1 Гб!!

Итого получаем абсолютно пустой файл Ексель с занимаемой памятью в системе 1 Гб! Ну и соотсвенно о быстрой работе ексель при такой занимаемой памяти и говорить не прихродиться, Ексель просто виснет.

Помогите пожалуйста, разобраться, как это исправить.
Android1 вне форума Ответить с цитированием
Старый 07.09.2016, 10:56   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как Вы думаете - где эксель хранит данные для Ctrl+Z/undo?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.09.2016, 11:06   #3
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Удаляю как? нажатием Delete или пкм-Удалить Строки?
Пардон, речь идет об ОЗУ а не размере файла. Мой коммент можно потереть
Да, да, я про ОЗУ и говорил, не про размер файла.

У меня просто есть макрос, который должен оброботать порядка 20 тыщ.файлов.

При запуске макроса, уже при обработке 2 файла, Ексель занимает память в ОЗУ 1,5 Гигабайта, и ексель по сути виснет.

Вопрос в том, как очистить занимаемые мегабайты Екселя в ОЗУ. ?
Android1 вне форума Ответить с цитированием
Старый 07.09.2016, 11:09   #4
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Как Вы думаете - где эксель хранит данные для Ctrl+Z/undo?
Теперь понял, откуда эти Гигабайты.

Подскажите пожалуйста, а как полностью обнулить этот буфер, где ексель хранить эти данные для Ctrl+Z ?
Android1 вне форума Ответить с цитированием
Старый 07.09.2016, 11:12   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как обнулить - не знаю или не помню...
Но с такой проблемой с макросами не сталкивался, да и нет там в макросах undo...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.09.2016, 11:15   #6
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Как обнулить - не знаю или не помню...
Но с такой проблемой с макросами не сталкивался, да и нет там в макросах undo...
В макросах может undo и нет, но в максросах есть copy и paste, и видимо во время этих команд, то что было скопировано макросом идет в буфер для Ctrl+z, а так как макрос копирует у меня очень много данных, то они накапливаются и забивают буфер для Ctrl+z очень сильно, настолько сильно, что работа ексель по сути прекращается.
Android1 вне форума Ответить с цитированием
Старый 07.09.2016, 11:22   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я сделал так, как Вы сказали (растянул значения).
потом удалил их.
а потом создал новую книгу. Старую книгу закрыл.
Память ОЗУ, занимаемая Excel, очистилась.
Что я сделал не так?

Вполне допускаю, что у Вас проблема в макросе.
Может быть, Вы в своём макросе копируете данные в книгу,
а потом эту книгу не закрываете?
Нужно Вам макрос отдать на анализ специалистам по VBA (я, к сожалению, таковым не являюсь).

Цитата:
но в максросах есть copy и paste, и видимо во время этих команд, то что было скопировано макросом идет в буфер для Ctrl+z
так не используйте буфер обмена! Это же и медленно и память забивает!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.09.2016, 11:31   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Когда-то The_Prist писал что макросы стандартно CtrlZ не откатываются.

Цитата:
Сообщение от Serge_007
Потому что при выполнении любого макроса очищается стек истории действий
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 07.09.2016, 11:43   #9
Android1
Форумчанин
 
Регистрация: 26.08.2010
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я сделал так, как Вы сказали (растянул значения).
потом удалил их.
а потом создал новую книгу. Старую книгу закрыл.
Память ОЗУ, занимаемая Excel, очистилась.
Что я сделал не так?
Вы закрыли старую книгу, тем самы сделали все не так
Старую книгу закрывать нельзя там содрежаться данные необходимы для Макроса.


Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вполне допускаю, что у Вас проблема в макросе.
!
Проблема не в макросе, в первом сообщении, я показал это.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Может быть, Вы в своём макросе копируете данные в книгу,
а потом эту книгу не закрываете?
Нужно Вам макрос отдать на анализ специалистам по VBA (я, к сожалению, таковым не являюсь).
!
Да книгу с макросом не закрываю! Потому что там данные для макроса находятся.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так не используйте буфер обмена! Это же и медленно и память забивает!
А как его не использовать то ?
Android1 вне форума Ответить с цитированием
Старый 07.09.2016, 11:51   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Когда-то The_Prist писал что макросы стандартно CtrlZ не откатываются.
Только что проверил - в макросе undo на его действия не работает, а вот сразу после макроса undo на то, что было сделано до макроса - работает! Офис365.
А по вопросу - нужно избавляться по возможности от copy/paste, и обычно это возможно.
P.S. Хотя вот сейчас трюк с undo повторить не удалось...
P.P.S. Нет, работает если ничего не писать на лист. Т.е. "Потому что при выполнении любого макроса очищается стек истории действий" не верно, не после любого, после такого не очищается.
Код:
Sub tt()
Application.Undo
[a1].Select
Application.Undo
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 07.09.2016 в 11:58.
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Огромная загрузка ЦП FVAM Windows 1 29.03.2014 18:53
Огромная Проблема . vanic1 Компьютерное железо 1 20.09.2011 21:28
Огромная проблема с настройкой монитора. Ibanez Wizard Компьютерное железо 5 23.08.2011 19:55
Проблема с виделением памяти! FreTFuL Общие вопросы C/C++ 1 07.05.2010 20:23