VBA для тех кто любит думать


VBA и Office XP - часть 89


Просто в режиме записи макроса вызовем несколько раз диалог поиска и замены, указывая каждый раз в нем разные параметры.

Вот что получилось:

 

Параметры поиска

Записанный фрагмент кода

Вперед, с согласием на продолжение поиска

.Forward = True

.Wrap = wdFindAsk

Назад, с согласием на продолжение поиска

.Forward = False

.Wrap = wdFindAsk

Вперед, без согласия на продолжение поиска

.Forward = True

.Wrap = wdFindAsk

Назад, без согласия на продолжение поиска

.Forward = False

.Wrap = wdFindAsk

Везде

.Forward = True

.Wrap = wdFindContinue

 

Видно, что наличие или отсутствие согласия на продолжение поиска, даваемое в выскакивающем запросе, не влияет на записываемый текст. А как же тогда отказаться от этого запроса на продолжение - ведь в готовой программе он явно неуместен? Откроем текст макроса и поставим после команды “.Wrap” еще один знак “=” (рис. 5.15). Выпал список возможных продолжений.

 

05_15.bmp

Рис. 5.15. Вот так можно определить возможные значения параметра...

 

Ну вот, все и ясно - так как значения ".wdFindAsk" и ".wdFindContinue" мы уже перебирали, то для отказа от продолжения замены после достижения конца документа нужно поставить значение параметра “.Wrap” как “wdFindStop”. То есть вышеприведенная таблица должна иметь вид

 

Параметры поиска

Необходимый фрагмент кода

Вперед, с согласием на продолжение поиска

.Forward = True

.Wrap = wdFindAsk

Назад, с согласием на продолжение поиска

.Forward = False

.Wrap = wdFindAsk

Вперед, без согласия на продолжение поиска

.Forward = True

.Wrap = wdFindStop

Назад, без согласия на продолжение поиска

.Forward = False

.Wrap = wdFindStop

Везде

.Forward = True

.Wrap = wdFindContinue

 

Осталось разобраться со строчкой “.Execute Replace:=wdReplaceAll”. По логике вещей, это должна быть команда запуска поиска, тем более что и слово “Execute” означает “Запустить”.


Начало  Назад  Вперед