Приветствую!
Есть макрос такого типа:
Код
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Moscow"
.Replacement.Text = "Москва"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "Saratov"
.Replacement.Text = "Саратов"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "Perm"
.Replacement.Text = "Пермь"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
И так далее. Подобных конструкций в нем еще несколько десятков. Макрос выполняется на большом количестве файлов поочередно, работает небыстро. Есть ли вариант как-то его сократить, чтобы ускорить время выполнения?
На первый взгляд нет - ничего ни убавить, ни прибавить - это уже так сделали разработчики Майкрософта.
Если только уменьшить диапазон поиска. Сейчас поиск в вашем коде происходит по всему документу, если текст надо менять только в заданных местах, то может быть будет быстрее: поиск будет вестись не по всему файлу, а только в указанном месте.
Спасибо. То есть свойства вида
.Forward = True
.Wrap = wdFindAsk
.Format = Falsе
и т.д.,
которые одинаковы для всех случаев, нельзя прописать один раз,
а далее просто дать списком, что на что должно меняться?
Сразу список передать нельзя в параметр Text, можно передать только одно значение.
Можно уменьшить количество кода, используя цикл, но на скорость это не повлияет: Ворд так же будет для каждого искомого значения просматривать весь текст.
Можно попробовать ускорить, если отключить обновление монитора, перейти в режим Черновик, сделать окно документа невидимым, но думаю, что это не сильно ускорит, т.к. время именно тратится на просмотр всего документа.