在查找/替换中使用ReplaceAll,但删除源格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在查找/替换中使用ReplaceAll,但删除源格式相关的知识,希望对你有一定的参考价值。

我需要一些帮助。我有一些代码从Excel工作表复制过滤范围,并将其粘贴到Word中的各个位置,替换特定的单词。问题是当我不使用wdReplaceAll时,它似乎使用目标格式粘贴值(一次)。但是,当我使用ReplaceAll时,包含了源Excel格式,这是我不想要的。现在我已经尝试坚持使用ReplaceAll的特定格式但是没有用,但坦率地说我更喜欢目标格式。有人可以帮忙吗?:

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "What"
    .Replacement.Text = "^c"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.PasteAndFormat (wdFormatPlainText)
答案

最简单的方法是在执行代码之前定义范围对象,例如:

set rng = Selection.FormattedText

然后在执行ReplaceAll后,选择范围并应用您想要的任何样式,例如:

rng.Select
Selection.Style = ActiveDocument.Styles("Normal")

以上是关于在查找/替换中使用ReplaceAll,但删除源格式的主要内容,如果未能解决你的问题,请参考以下文章

String.replaceAll 比自己完成工作要慢得多

使用String replaceAll在某些字符前面时如何不替换

如何替换字符串中的特殊字符?

java 替换文本中的所有指定的字符串,比如#*替换为sq, #**替换为we, 我使用了replaceAll进行的替换

sublime text 3 怎么替换

JavaScript 自己写一个 replaceAll() 函数