Word VBA - 从查找

时间:2016-05-18 14:59:15

标签: vba ms-word find word-vba

我尝试在Word VBA中使用Find.FindText来查找单词的前几个字母,然后选择该单词的其余部分。例如,如果我有: "你好,AB-1234-123检查"

我会找到" AB - "然后选择单词的其余部分以获得" AB-1234-123"。我不能使用空格作为我的MoveEndUntil(""),因为有时,这个词以句点结束。

到目前为止,我的代码是

SearchString = "AB-"
With Rng.Find
Do While .Execute(FindText:=SearchString, Forward:=True) = True
         Rng.MoveEndUntil (" ")
         MsgBox (Rng.Text)
Loop
End With

2 个答案:

答案 0 :(得分:0)

也许您可以选择找到的单词部分,然后将其展开为整个单词?

Selection.Expand Unit:=wdWord

答案 1 :(得分:0)

您仍然可以使用MoveEndUntil。如果查看方法的“帮助”主题,您会看到第一个名为 CSet 的参数可以包含多个字符。所以它可以寻找空间以及句号,逗号,分号等。

在测试代码的过程中,我也注意到,就目前而言,它将进入一个连续的循环 - 总是只找到第一个实例。所以我用Collapse方法处理了这个问题,以便下一个查找序列在最后一个“找到”范围之后立即开始。

Dim rng As word.Range
Dim SearchString As String

Set rng = ActiveDocument.content
SearchString = "AB-"
With rng.Find
    Do While .Execute(findText:=SearchString, Forward:=True) = True
      rng.MoveEndUntil (" .,;!")
      MsgBox rng.Text
      rng.Collapse wdCollapseEnd
    Loop
End With