web-dev-qa-db-ja.com

VBAを使用してWordの選択範囲のすべての区切りを置き換えるにはどうすればよいですか?

ドキュメントの一部を選択しましたが、その選択範囲内のすべてのマニュアルページとセクション区切り(次のページが偶数、次のページが不均一、次のページ、連続、列など、すべてのタイプの後者)を置き換えたいと思います。

[^ m ^ b]を検索する高度な検索/置換という単語を使用してマクロを記録しようとしましたが、機能しませんでした(テストのために休憩を入れてスパムしたドキュメントには何も見つかりませんでした)。

そこで、セクションと改ページを別々に処理しようとしました。最初に1つのタイプを選択してから置き換え、もう一度選択して、もう1つのタイプを置き換えました。このように、何らかの理由で2回目の検索(セクション区切り)も、選択前にドキュメントの一部に触れました。

ただし、特別なセクション区切りを検索するにはどうすればよいですか?高度な検索UIには、それらを具体的に検索するオプションはありませんが、通常のセクション区切り検索ではすべてが検索されるわけではありません。また、すべてを一度に行う方法があると思います。

更新、私は今セクションブレークを別々に試しています。以下のマクロはすべてのセクション区切りを置き換えますが、奇妙で間違った何かをします。 4つのセクション区切りがあり、すべて選択前に連続タイプで、次に次のページタイプのセクション区切りが1つ、選択範囲に偶数ページタイプのセクション区切りが1つあります。セクションブレークを置き換えるためのマクロを実行した後、選択が連続タイプから偶数ページに変更される前の最後のセクションブレーク。

私のマクロ:

Sub break2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^b"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = False
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
5
Ernst

この単純なコードは、すべてのブレークを削除します。残っているのは1つだけですが、これは一般的ではありません。「テキストラップブレーク」です。これも削除したい場合は、Array()パラメータに"^l"を追加するだけです。ただし、"^l"は「改行」とも一致することに注意してください。とにかく、あなたはテキストラップブレイクについて言及していませんでした、そしてそれはそれほど一般的ではないので、それは問題ではないと思います。それが誰かを助けることを願っています;)

Sub Delete_all_breaks_from_selection()
Dim arr() As Variant
Dim i As Byte

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'"^b" - Selection Breaks, "^m" - Page Break, "^n" - Column Break
arr = Array("^b", "^m", "^n")
    For i = LBound(arr) To UBound(arr)
        With Selection.Find
            .Text = arr(i)
            .Replacement.Text = ""
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Next
End Sub
3
ZygD