我需要删除位于任何段落第一个位置的每个找到的(从列表中)单词。
我最接近工作的努力未能始终如一地删除段落第一个位置中发现的单词,并偶尔删除段落中其他位置的单词。但是,它会在每次运行时在相同位置产生相同的错误。它看起来像这样:
For Each para In docCurrent.Paragraphs
firstword = para.Range.Words(1)
Set firstwd = para.Range.Words(1)
firstchar = para.Range.Characters(1)
Set searchrange = para.Range.Words(1)
searchrange.SetRange Start:=firstwd.Start, End:=firstwd.End
For Each wrdRef In docRef.Words
If Asc(Left(wrdRef, 1)) > 32 Then
match = wrdRef
i = Len(match)
If Left(firstword, i) = match Then
With searchrange.Find
.Wrap = wdFindStop
.Text = wrdRef
.Execute Replace:=wdReplaceOne
End With
End If
End If
Next wrdRef
Next para
如果有人能发现明显错误或推荐更好(或更有效)的方法,我将不胜感激。
答案 0 :(得分:0)
如果我做对了你,你就不需要有Find >> Replace
模型的复杂解决方案。您可以使用简单的Word对象和Word层次结构。请检查以下解决方案。
For Each para In docCurrent.Paragraphs
Set firstWd = para.Range.Words(1)
For Each wrdRef In docRef.Words
If Asc(Left(wrdRef, 1)) > 32 Then '??!!
'remove spaces and be careful about text vs. binary compare
If UCase(Replace(firstWd, " ", "")) = UCase(wrdRef) Then
firstWd.Text = "YourNewWordHere"
End If
End If
Next wrdRef
Next para