Word VBA查找某种颜色的文本并在其前面插入一个空格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word VBA查找某种颜色的文本并在其前面插入一个空格相关的知识,希望对你有一定的参考价值。
我是MS Word中的VBA新手,对Excel中的VBA只有一点感觉。
我正在尝试处理一个Word文件,其中包含许多单词附加的特殊信息。通过改变文本的颜色,大小和位置来传达信息,但是在单词和信息之间没有空格。
为了进行其他处理,我需要在信息文本和实际单词之间添加一个空格:
使用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
产生这个结果:
答案
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 - 通过样式应用备用字体颜色不适用于已应用直接格式(字体颜色)的文本