仅删除特定位置的字符串列表?

时间:2015-07-28 00:31:10

标签: vba full-text-search word-vba

我需要删除位于任何段落第一个位置的每个找到的(从列表中)单词。

我最接近工作的努力未能始终如一地删除段落第一个位置中发现的单词,并偶尔删除段落中其他位置的单词。但是,它会在每次运行时在相同位置产生相同的错误。它看起来像这样:

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

如果有人能发现明显错误或推荐更好(或更有效)的方法,我将不胜感激。

1 个答案:

答案 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