Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
156 views
in Technique[技术] by (71.8m points)

text - Word VBA: Scan document for string, copy it to list, and move to next occurrence

My Word document contains the text:

The_1234:

(some stuff)

The_1235:

(some stuff)

The_1236:

(some stuff)

............................

I want to be able to search the Word document for the string "The_" and somehow attach the next 4 characters after the string (i.e. "1234") to the string. Then, I will copy/paste the whole selected string "The_1234" into a list, and go to the next occurrence, "The_1235", and so on. To create a list containing all the strings "The_1234, The_1235, The_1236".

So far I have:

Sub FindThe()
Application.ScreenUpdating = False
        With Selection.Find
            .ClearFormatting
            .Text = "The_"
            .Execute Forward:=True
        End With
End Sub
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If your text follows the pattern indicated in your question you can use wildcards to find the full text. The code below looks for the pattern 'The_' followed by 4 numbers.

Note that this code does not select anything. You work with findRange which gets redefined to the found text each time a match is found.

Sub FindWithWildcards
   Dim findRange As Word.Range

   Set findRange = ActiveDocument.Range

   With findRange.Find
      .ClearFormatting
      .Text = "The_[0-9]{4}"
      .MatchWildcards = True
      '[add any other find properties here]
      Do While .Execute(Forward:=True) = True
         findRange.Copy
         '[add further actions here]
         findRange.Collapse wdCollapseEnd
      Loop
   End With

End Sub

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...