| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Настройка Excel |
| Автор: Тиль 29.5.2008, 13:08 |
| Есть большой файл.около 100 Мб. Много данных и макросов. При срабатиывании макросов файл начинает висеть по несколько минут. Можно как нибудь ускорить процесс выполнения?В процессе происходит много вычислений. Вопрос очень важный. Компьютер нормальный по параметрам |
| Автор: Naghual 29.5.2008, 13:45 |
Только оптимизацией Логики. |
| Автор: LOPUH 29.5.2008, 14:16 |
Согласен. Если интересует оптимизация кода зайдите http://forum.sources.ru/index.php?showforum=184. |
| Автор: RockClimber 30.5.2008, 16:40 |
Возможно, стоит отменить автоматическое выполнение некоторых макросов (если такие есть) и выполнять их только по запросу пользователя? Это тоже оптимизация в каком-то роде... |
| Автор: FINANSIST 3.6.2008, 08:39 | ||||
| Итак , господа, причины может быть 5: Причина первая. В файле помимо большого количества макросов есть большое количество формул. Решение. При запуске макросов прописываем в коде ручной пересчёт ячеек , при завершениии - соответственно включаем автоматический пересчёт. Причина вторая. В файле присутствуют макросы, перехватывающие определённые события. Например событие листов Selection_Change. Пояснение причины: При работе модульного макроса с ячейками после каждой такой операции срабатывает механизм перехвата события макросами листа, они (макросы листа) активизируются не выполняя своих полезных функций, но занимают системную память и время. Решение Прогони пошагово модульный марос через F8, и посмотри , будешь ли ты вылетать в марос листа. Если такое случится хотя бы раз - прописываешь в начале каждого модульного макроса код :
Причина третья Пользователь видит действия, мароса Пояснение причины Отображение действий пользователю занимает достаточно много системных ресурсов Решение
Причина четвёртая Необъявлены явно все типы переменных в коде решение option explicit dim ........... as ............ И наконец причина пятая Код действительно неоптимизирован, то есть выполняет кучу лишних действий Пояснение причины Если пользователь был не очень опытный, он мог большинство маросов просто тупо сгенерировать (записать) а не сформировать код вручную. При этом код становится просто избыточным ( в разы раздутым) Решение анализируй пошагово действия, смотри , что происходит и действительно ли данное действие необходимо. |