4. Поиск и замена текста
Способность находить текст, содержащийся в документе, и в случае необходимости заменять его является существенной частью многих прикладных решений Office. При непосредственном использовании приложения Word для выполнения таких задач вы, наверное, уже использовали диалоговые окна Find и Find and Replace. В программах VBA объект Find реализует те же функции, что и вышеупомянутые диалоговые окна.
Оба объекта — Selection и Range -~ имеют свойство Find, которое содержит ссылку на объект Find. Ее можно использовать для поиска в выделении или диапазоне. Общая процедура представлена ниже.
• Определяется выделение или (более часто) диапазон, который содержит
документ, в котором должен быть выполнен поиск.
• Устанавливаются свойства объекта Find, в которых задаются детали поиска.
• Вызывается метод Execute объекта Find для выполнения поиска.
(Свойства, выделенные звездочкой, совместно используются и объектом Replacement.)
Объект Replacement используется, когда производится поиск с заменой. Он имеет свойства, помеченные звездочкой в табл. 5.5, которые можно использовать для задания текста замены или форматирования. На примерах далее будет показано, как работать с этими объектами.
Объект Find имеет два метода, о которых необходимо знать. Метод ClearAll-Formatting удаляет все параметры форматирования, которые ранее были установлены. При этом следующая операция поиска будет исключительно текстовой. Хорошей практикой считается вызов этого метода при каждом использовании объекта Find. Это гарантирует удаление установок форматирования предыдущих операций. Метод Execute выполняет операции поиска и замены в соответствии с установленными параметрами. Этот метод принимает множество необязательных аргументов, которые соответствуют свойствам объекта Find. Другими словами, параметры операции поиска можно задать либо непосредственной установкой свойств объекта Find, либо передачей соответствующих аргументов методу Execute (или и тем, и другим). Таким образом, следующие два фрагмента программы являются эквивалентными (в них подразумевается, что Range 1 — это ссылка на объект Range):
With Rangel.Find
.Forward=True
.Text=”Bill Clinton”
.Wrap=wdFindContinue
.Execute End With
Rangel.Find.Execute Forward:=True,Text:=”Bill Clinton”, _ Wrap:=wdFindContinue