#include <Word.au3>
#include <Array.au3>
$oWord = _Word_Create() ; Создать Новый экземпляр Word
$oDoc=_Word_DocOpen($oWord,@ScriptDir&'\test.docx') ; Открыть
; Поиск нужного фрагмента
$Pos1=ContextSearch("текст1")
$Pos2=ContextSearch("текст2")
$oDoc.Range($Pos1[1],$Pos2[0]).Select ; Выделить нужный нам фрагмент для наглядности
$Data=$oDoc.Range($Pos1[1],$Pos2[0]).Text ; Получить текст фрагмента
MsgBox(0,'Найденный фрагмент',$Data)
; Поиск фрагмента для замены
$Pos1=ContextSearch("текст3")
$Pos2=ContextSearch("текст4")
$oDoc.Range($Pos1[1],$Pos2[0]).Select ; Выделить нужный нам фрагмент для замены
; $oWord.Selection.TypeText($Data) ; Заменить найденный текст
; Поиск фрагмента строки в документе Word, по умолчанию первый
Func ContextSearch($Context,$Occurrence=1)
Local $KolOccurrence=0 ; Число вхождений
Local $aPos[2]=[0,0] ; Массив позиций начала и конца фрагмента
$oWord.Documents(1).Select
For $i=1 To $Occurrence
$oWord.Selection.Find.Text = $Context
$oWord.Selection.Find.ClearFormatting ; Очищает форматирование внутри объекта Find, поиск без учета форматирования
$oWord.Selection.Find.Execute ; Запустить поиск
If $oWord.Selection.Find.Found()=False Then
MsgBox(16,'Не найден '&$i&' фрагмент',$Context)
;Return $aPos
Exit
EndIf
$KolOccurrence+=1
If $Occurrence=$KolOccurrence Then
$aPos[0]=$oWord.Selection.start
$aPos[1]=$oWord.Selection.End
;$oWord.Selection.Collapse($wdCollapseEnd) ; Снять выделение Курсор в конце выделенного текста
Return $aPos
EndIf
Next
EndFunc