【发布时间】:2018-06-13 21:08:47
【问题描述】:
此宏通过 Word 文档搜索单词:Set r = WordDoc.Range。是否可以使其仅在 Word 文档中的特定单词之间进行搜索?示例:仅从“Word1”搜索到“Word2”。我知道我需要找到这些单词并将它们设置为 Range.Start 和 Range.End,但我不擅长这个。有人可以帮我写代码吗?
Sub test()
Dim Word As Object, WordDoc As Object
Dim r As Boolean, f As Boolean, fO As Long
Set Word = CreateObject("Word.Application")
Set WordDoc = Word.Documents.Open(Filename:=Application.ThisWorkbook.path & "\test.docx")
'''name'''
Set r = WordDoc.Range
Do While UnifiedSearch(r, "name*book1")
If f Then
If r.Start = fO Then
Exit Do
End If
Else
fO = r.Start
f = True
End If
WordDoc.Range(r.Start + 4, r.End - 5).Copy
Range("C4").Select
ActiveSheet.Paste
Set r = WordDoc.Range(r.End, r.End)
Loop
WordDoc.Close
Word.Quit
End Sub
Private Function UnifiedSearch(r As Range, s As String) As Boolean
With r.Find
.ClearFormatting
.Text = s
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
UnifiedSearch = .Execute
End With
End Function
【问题讨论】:
-
你能说得更具体点吗?不清楚您是指文档中的第一个和第二个单词,还是字面意思是“Word 1”和“Word 2”的文本?您也没有向我们提供有关 f 和 f0 值的任何信息。
-
字面意思是“Word 1”和“Word 2”。