Термин Row
в Word используется только в контексте таблицы. Я предполагаю, что вы имеете в виду термин Line
, как в строке текста.
В объектной модели Word нет понятия "линия" (или "страница") из-за алгоритма макета динамического c : все, что делает пользователь, даже меняя принтер, может изменить место, где разрывается строка или страница. Поскольку эти вещи являются динамическими c, объект отсутствует.
Единственный контекст, в котором можно использовать «линию», связан с Selection
. Например, можно расширить Selection
до начала и / или конца строки. Включение этого в код в вопросе выглядело бы примерно так:
Sub FindStrings()
Dim StringsArr As Variant
Dim bFound As Boolean
Dim rng As Word.Range
Set rng = ActiveDocument.content
StringsArr = Array("string1", "string2", "string3")
For i = LBound(StringsArr) To UBound(StringsArr)
With rng.Find
.ClearFormatting
.Text = StringsArr(i)
.Wrap = wdFindStop
bFound = .Execute
'extend the selection to the start and end of the current line
Do While bFound
rng.Select
Selection.MoveStart wdLine, -1
Selection.MoveEnd wdLine, 1
Debug.Print Selection.Text
rng.Collapse wdCollapseEnd
bFound = .Execute
Loop
End With
Set rng = ActiveDocument.content
Next
End Sub
Примечания
Поскольку легче управлять, когда приходится l oop много раз , Range
объект используется в качестве базового c объекта поиска, а не Selection
. Найденное значение Range
выбрано только с целью получения всей строки, поскольку эти методы «Перемещение» для строк работают только с выделением.
Прежде чем l oop может быть продолжено, Range
( или, если мы работали с выделением, то его нужно «свернуть», чтобы код не выполнял поиск и снова не находил один и тот же экземпляр поискового запроса. (Это также причина для Wrap = wdFindStop
).