搜索文本并在之后添加文本

时间:2015-03-18 16:58:29

标签: vba ms-word word-vba

我的文档包含以下文本格式:

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

这不是我想要的。

1 个答案:

答案 0 :(得分:2)

您不需要使用vba来执行此查找替换,您可以使用简单的通配符查找替换来执行此操作。

按CTRL + H,找到(-<*>),替换为\1 indicates:(请务必选中&#34;使用通配符&#34;)


如果您确实想使用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
相关问题