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” означает “Запустить”.


Содержание  Назад  Вперед