Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 08:09   #1
Alkov74
Новичок
Джуниор
 
Регистрация: 12.11.2010
Сообщений: 1
Печаль Замедление работы скрипта в чём причина?

Здравствуйте всем!

1.Оперативы свободной достаточно, Проц загружен Wordом на 100%

Смысл работы скрипта такой
создаём документ, открваем ещё два одинаковых шаблона с полями для ввода

:цикл
первый шаблон заполняем
выделяем
вставляем в документ
из второго шаблона копируем в первый(чтобы не стирать все поля)
и к началу цикла .

При выполнении скрипта идёт замедление выполнения особенно после 40-го заполнения шаблона
...хотя данные примерно одинаковы
число
1-10 1:22 мин:сек
10-20 0:46
20-30 0:55
30-40 1:16
40-50 1:50
50-60 2:01
60-70 2:40
70-80 2:53
80-90 3:23
90-100 3:34
100-110 3:57
110-120 4:22
120-130 4:31
130-140 5:01
140-150 5:31
т.е. на каждый следующий десяток выводит медленней
Примерно так

if not OpenWordDocI(WrdApp, WrdDoc, "C:\", "Normal.dot") then
MsgBox "Не могу открыть файл Normal.dot!"
end if
WrdApp.Options.CheckGrammarAsYouTyp e = False
WrdApp.Options.CheckGrammarWithSpel ling = False
WrdApp.Options.CheckSpellingAsYouTy pe = False
WrdApp.Options.UpdateLinksAtOpen = False
WrdApp.Options.BackgroundSave = False

if not OpenWordDocI(WrdApp, WrdDocS, "C:\", " Заявление.dot") then

MsgBox "Не могу открыть шаблон !"

end if

if not OpenWordDocI(WrdApp, WrdDocShablon, "C:\", "Заявление.dot") then

MsgBox "Не могу открыть шаблон !"
end if
WrdApp.Visible = False
'1 - нач
WrdDocS.Variables.Item("Z_DOG_END") .Value = """""___""""_________ 20 ____ г."
WrdDocS.Variables.Item("Z_DOG_BEG") .Value = """""___""""_________ 20 ____ г."
WrdDocS.Fields.Update
WrdDocS.Activate
WrdDocS.Fields.Unlink
WrdDocS.Select
WrdApp.Selection.Copy
WrdDoc.Activate
WrdApp.Selection.PasteAndFormat (wdPasteDefault)
'1 - кон

'2 - нач
WrdApp.Selection.InsertBreak;
WrdDocShablon.Activate;
WrdDocShablon.Select;
WrdApp.Selection.Copy;
WrdDocS.Activate;
WrdDocS.Select;
WrdApp.Selection.PasteAndFormat (wdPasteDefault);
WrdApp.Selection.EndKey;
'2 - кон

далее идёт повторение кусков 1 и 2 но с другими данными и так раз 200
(скрипт формируется динамически в другой программе)

WrdDocS.Saved = True;
WrdDocS.Close;
WrdDocShablon.Saved = True;
WrdDocShablon.Close;
WrdApp.Selection.EndKey
SetWordVisibleI(WrdApp)

2. Какие есть идеи можно ли побороть замедление либо оптимизировать скрипт ?

Последний раз редактировалось Alkov74; 12.11.2010 в 08:27.
Alkov74 вне форума Ответить с цитированием
Старый 12.11.2010, 08:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может быть из-за того что буфер клипбоарда набивается?
Поищи как очищать скопированное в буфере.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2010, 20:32   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

нет времени анализировать скрипт, но попробуй в конце цикла (перед Next) поставить оператор DoEvents, чтобы дать возможность системе отвечать на запросы. А вообще, макросы штука не самая быстрая.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чём причина ошибки - mysql_num_rows(): supplied argument is not a valid vedro-compota PHP 6 23.09.2010 16:12
В чём причина зависания компьютера? Niels Компьютерное железо 8 16.09.2010 00:15
ajax индикатор работы скрипта ssdm JavaScript, Ajax 3 08.04.2010 17:04
Подскажите в чём причина :( Cannibal Компьютерное железо 3 16.02.2009 23:27