Destio небольшой блог

Как найти и выделить все вхождения текста, VBA (Word)

Окошко “Найти и заменить” в Microsoft Word может мазать все найденное желтеньким, но это не имеет отношения к выделению текста (и VBA может). А если искать с выделением (Selection.Find), то нахождение каждого следующего вхождения снимает выделение с предыдущего.

Поэтому для простаты надо искать в цикле (Do While True в самый раз). Вот пример куска кода, который находит весь текст со стилем L-biblio и записывает его в переменную для дальнейшей эксплуатации.

Selection.HomeKey Unit:=wdStory
Selection.Collapse
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("L-biblio-ru")
Do While Selection.Find.Execute(FindText:="") = True
    ruReferences = ruReferences & Selection.Text
Loop

В таком цикле не стоит использовать привычный параметр Wrap:=wdFindContinue, потому что все зарекурсится и ворд перестанет отвечать. Поэтому Selection.HomeKey Unit:=wdStory, чтобы сдвинуть выделение в начало документа.

Ярлыки: , ,


Ближайшие сообщения:

Похожие сообщения:

Комментарии к этой записи отключены.

Суши foodzy, shop омск доставка суши, китайской лапши в коробочках foodzy на дом в омске.