如何使用 VBA 替换 Word 中选择的所有换行符?

如何使用 VBA 替换 Word 中选择的所有换行符?

我已经选择了文档的一部分,现在我想替换该选定部分中的所有手动分页符和分节符(后者包括所有类型,例如偶数下一页、奇数下一页、连续下一页、列)。

我尝试在使用单词高级查找/替换搜索 [^m^b] 时录制宏,但没有成功(在用于测试的、用断点填充的文档中没有找到任何内容)。

所以我尝试分别处理分节符和分页符,首先选择,然后替换一种类型,再次选择,替换另一种类型。这样,第二次搜索(分节符)不知何故也触及了选择之前的文档的一部分。

但是,我该如何搜索特殊分节符呢?高级查找 UI 没有专门搜索它们的选项,但常规分节符搜索无法找到所有内容。另外,我认为有一种方法可以一次性完成所有操作。

更新,我现在正在单独尝试分节符。下面的宏确实替换了所有分节符,但做了一些奇怪和错误的事情。我有四个分节符,在选择之前都是连续类型,然后是一个下一页类型的分节符和一个偶数页类型的分节符。运行替换分节符的宏后,选择之前的最后一个分节符从连续类型更改为偶数页类型。

我的宏:

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

答案1

这段简单的代码删除了所有换行符。只剩下一个并不常见的换行符 - “文本换行符”。如果您也想删除它,只需添加"^l"参数Array()即可。但请记住,它"^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

相关内容