Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
sku144
194 / 16 / 2
Регистрация: 15.01.2015
Сообщений: 190
1

Ускорение работы макросов

02.06.2017, 19:59. Просмотров 1862. Ответов 4
Метки нет (Все метки)

Заметил одну очень интересную особенность, хотелось бы с вами посоветоваться по ней.

Есть лог файл, например 1мб, и есть макрос, который его обрабатывает, причем там миллион всяких условий в одном цикле по строкам этого лога. Чтобы эксель не зависал пока выполняется макрос, туда добавлен DoEvents.
Чтобы макрос работал быстрее, в начале добавлена пачка настроек

Visual Basic
1
2
3
4
5
6
7
Application.ScreenUpdating = False
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Application.DisplayAlerts = False
Application.CutCopyMode = False
Макрос сам отрабатывает за минуту, что очень много, хотя графику на экране не обновляет, только в статусбар процент выполнения пишет. Но стоит мне убрать фокус с окна экселя на другое приложение, как скорость работы ускоряется в 30 раз!

Не могу понять как фокус может влиять на скорость работы макроса.
У вас случайно нет идей почему так?
Можно ли средствами vba убрать фокус с окна?

Добавлено через 3 часа 12 минут
дополнение: достаточно просто мышку убрать с экселя на другой монитор не меняя фокуса!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2017, 19:59
Ответы с готовыми решениями:

Ускорение некоторых частей старых макросов
Всем привет. Появилось свободное время решил ускорить выполнение некоторых частей старых макросов,...

Отмена отслеживания изменений во время работы макросов
Помогите новичку. Есть книга - шаблон документа - в которой при помощи макросов можно создать...

Остановка работы всех макросов перед закрытием книги.
Pered zakrytiem knigi nado ostanovitj rabotu vseh makrosov. Kak eto mozno sdelatj, 4erez kakie...

Ускорение работы макроса
Добрый день всем!!! Прошу помочь с нижеприведенным макросом на предмет ускорения его работы.Расчет...

Автозаполнение ячеек, ускорение работы
Здравствуйте, подскажите, пожалуйста как можно сделать авто заполнение ячеек как можно удобнее и...

4
shanemac51
Модератор
Эксперт MS Access
9143 / 3531 / 560
Регистрация: 07.08.2010
Сообщений: 9,888
Записей в блоге: 2
02.06.2017, 20:21 2
Лучший ответ Сообщение было отмечено sku144 как решение

Решение

Цитата Сообщение от sku144 Посмотреть сообщение
Можно ли средствами vba убрать фокус с окна?
может попробовать что-то типа
Visual Basic
1
2
3
application.visible=false  ''в начале
''''''''обработка
application.visible=true '' в конце макроса
правда сама с екселем не пробовала, только с вордом
1
sku144
194 / 16 / 2
Регистрация: 15.01.2015
Сообщений: 190
05.06.2017, 13:22  [ТС] 3
Да, спасибо большое, это помогло. Правда создается ощущение, что эксель крашится
0
_shark
173 / 173 / 29
Регистрация: 11.10.2016
Сообщений: 559
05.06.2017, 16:29 4
в Винде, вроде бы, есть выборочная оптимизация, при которой ресурсы процессора чаще отдаются либо основной программе, либо фоновым процессам.
1
sku144
194 / 16 / 2
Регистрация: 15.01.2015
Сообщений: 190
05.06.2017, 17:20  [ТС] 5
Тут дело не в том было Потыкав палочкой в это еще раз я понял, что дело даже не в фокусе. Работает медленно, пока курсор висит над ячейками. Стоит его навести на статусбар или на ленту, скорость увеличивается. При курсоре наведенном на ячейки, он наичнает мигать, меняя свою иконку.
Поэтому проблему решило "отключение обновление курсора".

Visual Basic
1
Application.Cursor = xlWait / xlDefault
0
05.06.2017, 17:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2017, 17:20

Ускорение работы макроса (преобразование данных к нужному формату)
Добрый день! в программировании на VBA недавно, а поэтому подозреваю, что подход к написанию кода...

Ускорение работы компьютера, а так же работы Интернета (u22)
Когда допустим, включаю компьютер, у меня очень долго стоит заставка "Добро пожаловать" а так же...

Ускорение работы компьютера, а так же работы Интернета
Как ускорить работы компьютера, и чтобы ПРИСУТСТВОВАЛА БЕЗОПАСНОСТЬ моего компьютера? моих данных....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.