![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
Тиль |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 27.2.2006 Репутация: нет Всего: нет |
Есть большой файл.около 100 Мб. Много данных и макросов. При срабатиывании макросов файл начинает висеть по несколько минут. Можно как нибудь ускорить процесс выполнения?В процессе происходит много вычислений. Вопрос очень важный. Компьютер нормальный по параметрам
--------------------
Казалось нам пипец, оказалось что не казалось |
|||
|
||||
Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Только оптимизацией Логики. -------------------- Я желаю всем Счастья! |
|||
|
||||
LOPUH |
|
|||
![]() Растение ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 15.2.2008 Где: Красноярск Репутация: 3 Всего: 4 |
||||
|
||||
RockClimber |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Возможно, стоит отменить автоматическое выполнение некоторых макросов (если такие есть) и выполнять их только по запросу пользователя? Это тоже оптимизация в каком-то роде... -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
FINANSIST |
|
||||
Статус: Жив ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 11.4.2008 Где: Москва Репутация: 13 Всего: 23 |
Итак , господа, причины может быть 5:
Причина первая. В файле помимо большого количества макросов есть большое количество формул. Решение. При запуске макросов прописываем в коде ручной пересчёт ячеек , при завершениии - соответственно включаем автоматический пересчёт. Причина вторая. В файле присутствуют макросы, перехватывающие определённые события. Например событие листов Selection_Change. Пояснение причины: При работе модульного макроса с ячейками после каждой такой операции срабатывает механизм перехвата события макросами листа, они (макросы листа) активизируются не выполняя своих полезных функций, но занимают системную память и время. Решение Прогони пошагово модульный марос через F8, и посмотри , будешь ли ты вылетать в марос листа. Если такое случится хотя бы раз - прописываешь в начале каждого модульного макроса код :
Причина третья Пользователь видит действия, мароса Пояснение причины Отображение действий пользователю занимает достаточно много системных ресурсов Решение
Причина четвёртая Необъявлены явно все типы переменных в коде решение option explicit dim ........... as ............ И наконец причина пятая Код действительно неоптимизирован, то есть выполняет кучу лишних действий Пояснение причины Если пользователь был не очень опытный, он мог большинство маросов просто тупо сгенерировать (записать) а не сформировать код вручную. При этом код становится просто избыточным ( в разы раздутым) Решение анализируй пошагово действия, смотри , что происходит и действительно ли данное действие необходимо. -------------------- “...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности” Эдуард Успенский, “Каникулы в Простоквашино” |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |