2015-03-18 3 views
1

У меня есть документ, который содержит следующий формат текста, который происходит во всем:Поиск текста и добавить текст после

5:43-64 

Я хочу найти и заменить, так что текст читается так:

5:43-64 indicates: 

К счастью, - только появляется в таком виде текста. Число меняется в каждом случае. Поэтому я не думаю, что мне нужно беспокоиться о сложной схеме поиска. Я могу просто найти символ -.

Я хочу, чтобы потом взять все, что после в -, а затем сохранить его в качестве переменной затем вставить текст указывает позже. Мне нужно это, чтобы перебрать весь документ, сделав эти изменения в любом случае -.

Вот код, который я должен до этого момента, что вид половины работ:

Sub placeWordAfterDash() 

Selection.Find.ClearFormatting 
With Selection.Find 
    .Text = "-" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 

If Selection.Find.Execute Then 
    Dim selectedString As String 
    Selection.Select 
    selectedString = Selection.Next(Unit:=wdWord, Count:=1).Text 
    Selection.Text = "-" & selectedString & " indicates: " 
End If 

End Sub 

Этот код только делает изменения в одном экземпляре, а также оставляет меня:

5:43-64 indicates: 64 

Который не совсем то, что я хочу.

ответ

2

Вам не нужно использовать vba для этого find-replace, вы можете сделать это с помощью простого подстановочного поиска-replace.

нажмите CTRL + H, найти (-<*>), Заменить \1 indicates: (убедитесь, что флажок "Использовать подстановочных")


Если вы хотите использовать VBA:

Selection.Find.ClearFormatting 
With Selection.Find 
    .Text = "(-<*>)" 
    .Replacement.Text = "\1 indicates:" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchAllWordForms = False 
    .MatchSoundsLike = False 
    .MatchWildcards = True 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 
+0

Я использую это как часть гораздо большего макроса, который написан в VBA. Поэтому я благодарю вас за включение кода VBA. – Rymnel

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