2013-07-21 5 views
1

Я ищу конкретный текст внутри документа, удаляя текст, а затем добавляя разрыв раздела. Я могу заставить этот код работать только для одного экземпляра. Когда я попытался сделать цикл while, проверяя каждую строку, Word разбился.Word 2010 VBA: найдите текст и замените его разделом

With Selection.Find 
     .Text = "INSTRUCTOROVERVIEW" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = False 
     .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
Selection.Find.Execute 
With Selection 
    If .Find.Forward = True Then 
     .Collapse Direction:=wdCollapseStart 
    Else 
     .Collapse Direction:=wdCollapseEnd 
    End If 
    .Find.Execute Replace:=wdReplaceOne 
    If .Find.Forward = True Then 
     .Collapse Direction:=wdCollapseEnd 
    Else 
     .Collapse Direction:=wdCollapseStart 
    End If 
    .Find.Execute 
End With 
Selection.InsertBreak Type:=wdSectionBreakNextPage 

ответ

1

Вы также должны показать свой код цикла.

Однако установка

.Wrap = wdFindStop 

будет препятствовать функции поиска от выполнения кода на неопределенное время, что, вероятно, почему это происходит сбой. Использование wdFindContinue приведет к продолжению поиска с начала документа снова и снова.

Однако вы также должны проверить полученный результат Find.Execute. Значение Boolean (True или False) указывает, был ли поиск успешным. Если это не удается, вы должны использовать Exit Do или Exit For, чтобы вырваться из вашей петли.

Смежные вопросы