仅删除特定位置的字符串列表?
Remove a list of strings in a specific position only?
我需要删除所有找到的(从列表中)位于任何段落第一个位置的单词。
我最接近工作的努力未能始终如一地删除段落第一个位置的单词,偶尔会删除段落其他位置的单词。但是,它在每个 运行-through 上的相同位置都会出现相同的错误。它看起来像这样:
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
如果有人能发现明显的错误或推荐更好(或更有效)的方法,我将不胜感激。
如果我没看错,您不需要使用包含 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
我需要删除所有找到的(从列表中)位于任何段落第一个位置的单词。
我最接近工作的努力未能始终如一地删除段落第一个位置的单词,偶尔会删除段落其他位置的单词。但是,它在每个 运行-through 上的相同位置都会出现相同的错误。它看起来像这样:
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
如果有人能发现明显的错误或推荐更好(或更有效)的方法,我将不胜感激。
如果我没看错,您不需要使用包含 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