1

この手順で過度の段落ギャップを移動しようとしています。

Sub RemoveGaps()
    wrdDoc.Content.Select

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
        .Text = "^13^13"
        .Replacement.Text = "^p"

        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = True
    End With

    Selection.Find.Execute Replace:=wdReplaceAll
    If Selection.Find.Found = True Then
        Call RemoveGaps
    End If

End Sub

実行した後、ループが終了せず、ドキュメントの最後にこの種のフォーメーションが表示されます。少しの間は機能しますが、スタックすることに注意してください。

ここに画像の説明を入力

編集: 最後に 2 つの段落区切りがあり、別の 2 つに置き換えられます。私は実際に手動でそれらを選択して置き換えようとしました..同じことですが、何らかの理由で余分なものに置き換えられました。それが何なのかわかりませんが、おそらく別の特殊文字ですか?

4

3 に答える 3

2
Sub RemoveGaps()

    Dim oFnd As Find

    Set oFnd = ThisDocument.Content.Find
    oFnd.ClearFormatting
    oFnd.Replacement.ClearFormatting

    With oFnd
        .Text = "^13^13"
        .Replacement.Text = "^p"

        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = True
    End With

    Do
        oFnd.Execute Replace:=wdReplaceAll
    Loop Until Not oFnd.Execute Or oFnd.Parent.End = ThisDocument.Content.End

End Sub

KazJaw が機能する理由はわかりません。最後に 2 つの段落記号が残っていますが、Execute は False を返します。最後の GoTo に到達すると、これがイミディエイト ウィンドウに表示されます。

?selection.Find.Execute
False
?selection = string(2,chr$(13))
True

それだけなのに、なぜ 2 つのキャリッジ リターンが見つからないのでしょうか。奇数。とにかく、選択や GoTo を変更するのは好きではないので、自分のバージョンを含めました。Find が何も見つからない場合、またはドキュメントの最後にある場合は終了します。

連続する段落数の上限がわかっている場合は、別の方法で行うことができます。たとえば、空白の段落が 10 個以下であることがわかっている場合は、次のようにすることができます。

Sub RemoveGaps2()

    Dim i As Long

    For i = 10 To 2 Step -1
        With ThisDocument.Content.Find
            .Text = "[^13]{" & i & ",}"
            .Replacement.Text = Chr$(13)
            .MatchWildcards = True
            .Execute , , , , , , , , , , wdReplaceAll
        End With
    Next i

End Sub
于 2013-04-16T21:52:23.790 に答える