VBA在粗体和非粗体文本之间插入回车

时间:2019-03-08 18:51:08

标签: vba carriage-return text-formatting

我有一个单词文档,是采访记录。主持人评论以粗体显示,而受访者评论则不以粗体显示。这是粗体和非粗体文本的长期连续运行。我需要添加回车符,以便主持人和受访者的问题之间有一个空白行。我在下面找到了在特定文本之间插入回车符的代码,但是我不知道如何更改它以在粗体和非粗体文本之间插入。任何帮助将不胜感激!

Sub Test()
    ActiveDocument.Paragraphs(1).Range.Text = "Foo" & Chr(11) & "Bar"
End Sub

1 个答案:

答案 0 :(得分:0)

这是我想出的,它使用一个子项在粗体文本后插入一个换行符,然后调用另一个子体对非粗体文本执行相同的操作。我使用了常量'vbCrLf',它代表Visual Basic回车换行,它等于Chr(13)+ Chr(10),并且我认为在文档中插入换行符时,这是兼容性的最佳做法, Chr(11)。

Sub InsertBreakAfterBold()
    'Select entire document
    Selection.WholeStory

    'Make each .Method belong to Selection.Find for readability
    With Selection.Find
        'Set search criteria for bold font
        .Font.Bold = True
        'Find next occurrence
        .Execute

        'Each time bold text is found add a line break to the end of it then find the next one
        Do While .Found
            Selection.Text = Selection.Text + vbCrLf
            .Execute
        Loop

    End With

    'Repeat process for nonbold text
    Call InsertBreakAfterNonbold
End Sub

Sub InsertBreakAfterNonbold()
    Selection.WholeStory

    With Selection.Find
        .Font.Bold = False
        .Execute

        Do While .Found
            Selection.Text = Selection.Text + vbCrLf
            .Execute 
        Loop

    End With
End Sub

Microsoft的VBA参考是我做到这一点的最大资源:https://docs.microsoft.com/en-us/office/vba/api/overview/word