как увеличить скорость

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
katy8
Сообщения: 2
Зарегистрирован: 04 авг 2005, 18:34
Откуда: Ekaterinburg
Контактная информация:

У меня есть скрипт (*.vbs), который выполняет sql запросы выводит в Excel результат (в нужном мне виде) в том числе формиатирование ячеек (цвета, границы и т.п.)
Набор данных бывает большим
и пока excel все это дело прорисует - устанешь ждать :(

при больших данных отчет может рисоваться от 5 минут и больше
Задержка происходит на мой взгляд в кэше и затем в прорисовывании данных
Под кэшем я понимаю такое: результат запроса получен, но в Excele данные заполняются частами (через определенный промежуток времени) и уже после у меня идет форматирование ящеек
можно ли как-нибудь ускорить процесс формирования отчета?
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

В MS Excel есть возможность отключить обновление экрана :

Код: Выделить всё

Application.ScreenUpdating = False
' Здесь создание отчёта и форматирование ячеек
Application.ScreenUpdating = True
Если в Вашем случае это ничем не поможет, то Вы всегда сможете продолжить эту тему.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Еще можно сэкономить врямя на самой записи в ячейки.
Нужно не по одному значению записывать а загонять данные в массив (в переменной типа Variant) и присваивать весь массив диапазону ячеек.

Код: Выделить всё

Range(cells(i,j),cells(k,l)).Value=A
То же самое касается и форматирования. Обратитесь за один раз к нескольким ячейкам, которые имеют одинаковый формат и отформатируйте их за 1 раз.
katy8
Сообщения: 2
Зарегистрирован: 04 авг 2005, 18:34
Откуда: Ekaterinburg
Контактная информация:

записываю я действительно по одной
а форматирую сразу 1 раз несколько ячеек
-
Я обязательно попробую ваш вариант. Думаю, он мне поможет. Спасибо
Ответить