【发布时间】:2018-03-04 13:22:46
【问题描述】:
我是 MS Word 中的 VBA 的新手,对 Excel 中的 VBA 不太熟悉。
我正在尝试处理一个 Word 文件,该文件包含一些附加到许多单词的特殊信息。信息是通过改变文本的颜色、大小和位置来传达的,但单词和信息之间没有空格。
为了做一些其他的处理,我需要在信息文本和实际单词之间添加一个空格:
使用 VBA,我可以使用与 here 描述的方法略有不同的颜色来查找信息文本。我可以用“测试”代替它。但我想做的是用空格加上信息文本替换它。或者也许只是在信息文本之前神奇地插入一个空格。
想法?
这段代码:
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
产生这个结果:
【问题讨论】:
-
问题的关键在于,使用Find方法,提取实际找到的文本!由于搜索基于字体颜色,因此文本可以是任何内容。一旦从 Find 方法中提取了实际文本,就可以使用一个简单的连接将该文本替换为一个空格加上该文本。不幸的是,我不知道如何提取实际文本...
-
显示你的代码到现在
-
代码显示。谢谢。