我正在尝试删除包含特定单词的段落。我解决了这个问题,如何删除更多的单词。
VBA
Dim check As Boolean
Dim search As String
Dim para As Paragraph
Dim tempStr As String
Dim txt As String
search = "word1","word2" #word2 doesn´t work
For Each para In ActiveDocument.Paragraphs
txt = para.Range.Text
tempStr = LCase(txt)
check = InStr(tempStr, search)
If check = True Then
para.Range.Delete
End If
Next
End Sub
答案 0 :(得分:0)
您无法在VBA中创建字符串类型的字符串列表。您需要创建一个集合或数组,并遍历所有元素以检查每个元素。我会亲自使用一个收藏集。
dim search as Collection
dim colliter as variant
search.add "word1"
search.add "word2"
for each colliter in search
For Each para In ActiveDocument.Paragraphs
txt = para.Range.Text
tempStr = LCase(txt)
check = InStr(tempStr, colliter)
next
next
答案 1 :(得分:0)
您的代码效率很低-无需遍历所有段落。试试:
Sub Demo()
Application.ScreenUpdating = False
Dim ArrFnd(), i As Long
ArrFnd = Array("One", "Two", "Three", "Four", "Five", "Six")
With ActiveDocument
For i = 0 To UBound(ArrFnd)
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ArrFnd(i)
.Replacement.Text = ""
.Forward = True
.MatchCase = True
.Wrap = wdFindContinue
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found = True
.Paragraphs.First.Range.Text = vbNullString
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Next
End With
Application.ScreenUpdating = True
End Sub