0

ここに画像の説明を入力VBA マクロを使用して、Word 文書から特定の行を削除したいと考えています。基本的に、削除される (そして "***" に置き換えられる) テキスト (のブロック) は、特定のパターン (以下) に従います。

Bottom of Form
perma-link

Top of Form
save
Bottom of Form
[+] ....
[–] ....
Top of Form

「....」はブロックごとに変わるテキストを表しますが、必ず行が「[+]」または「[-]」で始まります。

適切なマクロを提案してください

編集: スクリーンショットでは、テキストを黄色のままにして、残りを削除したいと思います。(実際のファイルでは、テキストは黄色ではありません)

PS-FYI、行の検索と削除のマクロをループする例を使用してみました(行ごとの削除用) が、マクロの行 "selection.row.delete" を強調表示するデバッグ オプションでランタイム エラー 5941 が発生します。

これは何を意味するのでしょうか?

4

1 に答える 1

1

例のリストが段落の始まりのリストであると仮定すると、次のコードでうまくいくはずです。arrRemoveテストで行ったように、すべての「段落開始」を配列に配置する必要があります。マークのいずれかが特別なマークである場合 (追加情報については、このリンクを参照してください)、および\で行ったように、その前に追加する必要があります。これがあなたが探しているものであることを願っています。[+][-]

Sub Macro2()

    Dim arrRemove As Variant
        arrRemove = Array("Bottom of Form", "perma -link", "Top of Form", _
                    "\[+\]", "\[\-\]", "Donec", "In")

    Dim i!
    For i = 0 To UBound(arrRemove)
        Activedocument.Range(0,0).select

        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = arrRemove(i) & "*^13"
            .Replacement.Text = ""  'replace with nothing

            .Forward = True
            .Wrap = wdFindContinue
            .MatchCase = False
            .MatchWildcards = True
        End With
        Selection.Find.Execute Replace:=wdReplaceAll

    Next i

End Sub

上記のマクロは、次のドキュメントの黄色の段落をすべて削除します。

ここに画像の説明を入力

于 2013-10-03T20:32:58.487 に答える