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

问题描述 投票:0回答:1

我是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

vba ms-word
1个回答
3
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.