Страница: 1 |
Страница: 1 |
Вопрос: Можно ли ускорить процесс выполнения макросов????
Добавлено: 21.01.08 12:54
Автор вопроса: Таня | ICQ: 410031407
Подскажите, пожалуйста. Можно ли как-то ускорить процесс выполнения макросов. У меня есть лист Excell, в ячейках связи с другими файлами, при открытии моего файла идет долгий процесс обновления, можно ли его какими-нить способами ускорить??? Спасибо
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 21.01.08 13:06
Не думаю, что можно ускорить этот процесс. Разве что купить более быстрый компьютер...
Номер ответа: 2
Автор ответа:
Pavel
Вопросов: 0
Ответов: 36
Профиль | | #2
Добавлено: 21.01.08 15:03
Если честно, то не очень понятно. При чём тут макросы, если у вас Excel подвисает, когда вы открываете книгу со связамис другими файлами. Удалите все связи и книга будет быстро открываться.
Если ли же вы запускаете макрос и он долго обрабатывает информацию (долго работает), то
1) по возможности откажитесь от метода Select и Activate в вашем макросе
2) используйте эту конструкцию в ваших макросах:
'выключаем некорые параметры для увеличения скорости обработки файла
With Application
.ScreenUpdating = False 'отключение обновление экрана
.Calculation = xlCalculationManual 'отключение пересчёт формул вручную
.EnableEvents = False 'отключение событий
.DisplayAlerts = False 'отключение предупреждающих сообщений
.ErrorCheckingOptions.BackgroundChecking = False 'отключение фотоновой проверки ошибок
End With
'ОСНОВНОЙ КОД....
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.DisplayAlerts = True
.ErrorCheckingOptions.BackgroundChecking = True
End With
End Sub
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 22.01.08 13:51
Pavel, хороший пример! Мне всегда раньше хватало только
.Calculation = xlCalculationManual
Проверка формул на ошибки у меня и так отключена, а о каких предупреждающих сообщениях идёт речь, что-то непонятно. Можно пояснить. Я бы не стал отключать эти сообщения в случае, если есть риск возникновения циклических ссылок.
Ну и вообще для ускорения работы макросов сам алгоритм должен быть неизбыточным, надо отказаться от несущественных операций, вынести за пределы циклов всё, что можно сделать вне их тела. Например, если формат ячеек одинаков для каждой из строчек большой таблицы, заполняемой макросом построчно, то отформатировать тело таблицы лучше в самом конце.
Номер ответа: 4
Автор ответа:
Pavel
Вопросов: 0
Ответов: 36
Профиль | | #4
Добавлено: 22.01.08 13:56
ну, это я по максимому привёл пример. Я тоже использую указанные тобой 2 строки.
А отключение предупрежд. сообщений я использую только так. Как пример
Application.DisplayAlerts = False
Sheets("Лист3".Delete
Application.DisplayAlerts = True
End Sub
EnableEvents отключаю, чтобы отключить какой-нибудь свой же обработчик, типа
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 24.01.08 15:21
Ok, спасибо! Теперь всё ясно.
Sheets("Лист3".Delete - жёстко ты с ним
Номер ответа: 6
Автор ответа:
dimka
Вопросов: 1
Ответов: 4
Профиль | | #6
Добавлено: 26.01.08 17:26
Конечно можно. Нужно с макросов, записанных автоматически в Exell поубирать половину лишних комманд, кторые формирует сам Exell
Номер ответа: 7
Автор ответа:
DrugON
ICQ: nospam
Вопросов: 10
Ответов: 53
Профиль | | #7
Добавлено: 14.03.08 02:22
Зачот
Чтобы макросы не тормозили - удалите их
Димке респект за самый грамотный ответ
Номер ответа: 8
Автор ответа:
dimka
Вопросов: 1
Ответов: 4
Профиль | | #8
Добавлено: 14.03.08 13:17
Спасибо!