Word VBA查找某种颜色的文本并在其前面插入一个空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word VBA查找某种颜色的文本并在其前面插入一个空格相关的知识,希望对你有一定的参考价值。

我是MS Word中的VBA新手,对Excel中的VBA只有一点感觉。

我正在尝试处理一个Word文件,其中包含许多单词附加的特殊信息。通过改变文本的颜色,大小和位置来传达信息,但是在单词和信息之间没有空格。

Unprocessed Text

为了进行其他处理,我需要在信息文本和实际单词之间添加一个空格:

Processed Text

使用VBA我能够通过颜色找到信息文本,使用here描述的方法略有不同。我可以用“Test”替换它。但我想要做的是用空格和信息文本替换它。或者也许只是在信息文本之前神奇地插入一个空格。

想法?

这段代码:

Sub ChangeColorWithReplace()
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = RGB(120, 48, 191)
    Selection.Find.Replacement.ClearFormatting
    'Selection.Find.Replacement.Font.Color = wdColorRed
    With Selection.Find
        .Text = ""
        .Replacement.Text = "test"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

产生这个结果:

Incorrectly Processed Text

答案

Word的查找/替换功能的一个巧妙之处在于您可以使用特殊字符来执行此类操作。单击“更多”按钮,“特殊”查看列表。

在这种情况下,您想要的是保留替换中的“查找文本”,即字符集:^&我已添加到您的示例代码中,如下所示。

Sub ChangeColorWithReplace()
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = RGB(120, 48, 191)
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
        .Text = ""
        .Replacement.Text = "^&test"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

以上是关于Word VBA查找某种颜色的文本并在其前面插入一个空格的主要内容,如果未能解决你的问题,请参考以下文章

Word VBA - 通过样式应用备用字体颜色不适用于已应用直接格式(字体颜色)的文本

选择非粗体文本并更改其颜色(选定段落的)- MS Word VBA 宏

基于Excel中数据库的VBA在word中查找和替换

如何用VBA在WORD中插入一个文本框

寻找Word VBA代码以使用当前默认高亮颜色突出显示文本

vba打开word后每页插入文本框