powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / отчего медленно выполняется макрос? (форматирование)
14 сообщений из 14, страница 1 из 1
отчего медленно выполняется макрос? (форматирование)
    #37459600
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выкидываю в эксель отчет из программы - данные выкидываются моментально, а вот "наведение красоты" идет долго.

отрисовываю толстую рамку и внутренние линии, задаю область печати - около минуты на 20 листов (строк по 100 на листе), в другом отчете еще формирую заголовки (объединение ячеек, размер шрифта, цвет фона, толстая рамка вокруг)(всего 1 лист) так заголовок вообще жутко долго отрисовывается, как бы нехотя, прям анимация получается, минуты 1,5 ждать

в чем может быть проблема? может что в настройках экселя покрутить?


зы. макросы примитивные, сделаны через "запись макроса", офис 2007
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37459678
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй на время выполнения кода отключить отрисовку.
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460503
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

а как это делается? кстати во время выполнения эксель у меня невидимый
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460515
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Application.ScreenUpdating = False
...
Application.ScreenUpdating = True
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460536
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете еще временно отключить вычисления:
Код: plaintext
Application.Calculation = xlManual 
не забудьте включить после выполнения процедуры.
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460585
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikttur,

формул у меня нет совсем, просто для печати и сохранения выкидываю, или рассчет чего нибудь все равно идет?
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460609
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставьте, проверьте время до и после. Вдруг у Вас там чего-нибудь прокралось? :)
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460644
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
включил и то и то - никакой разницы... может сам эксель тупит - на другом компе, послабее, выводится быстрее, версия экселя таже, но ставили с другого дистр
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37460687
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форматирование - медленная штука. Ускорить можно копируя форматы с листа-шаблона. И подготовка к печати очень тормозная. Там важно из макроса(после рекордера) повыбрасывать все ненужное.
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37461655
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlвключил и то и то - никакой разницы... может сам эксель тупит - на другом компе, послабее, выводится быстрее , версия экселя таже, но ставили с другого дистр
Похоже на проверку антивирусом. Я бы включил диспетчер задач на время выполнения и посмотрел какие процессы занимают память и процессор.
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37461756
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

антивирус не жрет проц, только сам эксель 5-10 % и почемуто "диспетчер очереди печати" 8-17%
как отрисовка заканчивается, диспетчер тоже жрать перестает
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37462165
EducatedFool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) может, вы всё-таки первой строкой кода не отключили перерисовку экрана?
Application.ScreenUpdating = False

2) одно и то же форматирование для 20 листов?
Если да - зачем делать оформление макросом?
Можно же один раз вручную подготовить лист-шаблон со всем нужным форматированием, и потом вставлять данные на копии листа-шаблона.

3) покажите код (а лучше выложите пример файла с кодом)
Что-то всё-таки там лишнее - может, вы ячейки в цикле перебираете, когда можно применить метод к целому диапазону одной строкой кода.

4) "макросы примитивные, сделаны через "запись макроса", офис 2007"
вот в этом и проблема
Убираем все Select и Activate - код начинает работать в 100 раз быстрее
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37462436
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EducatedFool1) может, вы всё-таки первой строкой кода не отключили перерисовку экрана?
Application.ScreenUpdating = False
хм, в амнезии вроде не замечен

EducatedFool2) одно и то же форматирование для 20 листов?
Если да - зачем делать оформление макросом?
Можно же один раз вручную подготовить лист-шаблон со всем нужным форматированием, и потом вставлять данные на копии листа-шаблона.
так делаю шапку, а рамку / область печати / сетку отрисовываю потом в зависимости от колва строк., и заголовки разделов тоже т.к. могут в разное место быть воткнуты


EducatedFool3) покажите код (а лучше выложите пример файла с кодом)
Что-то всё-таки там лишнее - может, вы ячейки в цикле перебираете, когда можно применить метод к целому диапазону одной строкой кода.
ну до применения к диапазону я догадался :) ну вот тебе пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
cell1 = worksheet .OlePropertyGet("cells", 1 , 1 );
cell2 = worksheet.OlePropertyGet("cells",ind_stroki, 19 );
tmp = worksheet.OlePropertyGet("range", cell1,cell2);
tmp.OlePropertyGet("Borders", 10 ).OlePropertySet("LineStyle", 1 );
tmp.OlePropertyGet("Borders", 10 ).OlePropertySet("Weight", 4 );
tmp.OlePropertyGet("Borders", 7 ).OlePropertySet("LineStyle", 1 );
tmp.OlePropertyGet("Borders", 7 ).OlePropertySet("Weight", 4 );
tmp.OlePropertyGet("Borders", 8 ).OlePropertySet("LineStyle", 1 );
tmp.OlePropertyGet("Borders", 8 ).OlePropertySet("Weight", 4 );
tmp.OlePropertyGet("Borders", 9 ).OlePropertySet("LineStyle", 1 );
tmp.OlePropertyGet("Borders", 9 ).OlePropertySet("Weight", 4 );
worksheet.OlePropertyGet("PageSetup").OlePropertySet("PrintArea",tmp.OlePropertyGet("address")) ;
worksheet.OlePropertyGet("PageSetup").OlePropertySet("PrintTitleRows", "$1:$4");

ЗЫ. если выполнять это из макроса в экселе то скорость таже
...
Рейтинг: 0 / 0
отчего медленно выполняется макрос? (форматирование)
    #37462515
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: iskatelsql
> worksheet.OlePropertyGet("PageSetup").OlePropertySet("PrintArea",tmp.OlePropertyGet("address")) ;
> worksheet.OlePropertyGet("PageSetup").OlePropertySet("PrintTitleRows", "$1:$4");
> ЗЫ. если выполнять это из макроса в экселе то скорость таже


С какого-то лешего, недавно начала тормозить генерация Ексельного файлика, который запихивался в БД и пользователям даже
не показывался. После разбора полётов выяснилось, что зависало все именно при настройке печати. Убрали настройки печати
и снова наступила благодать :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / отчего медленно выполняется макрос? (форматирование)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]