VBA替换文本不保持替换文本的格式,而是随机应用大写格式

时间:2019-02-20 18:38:20

标签: vba ms-word

我正在尝试使此代码正常工作,但它一直在随机替换我要替换为“ ID”的整个句子。我正在使用ID00数字替换文本。有时,替换将是全部上限。我无法弄清楚应如何保留其外壳。 例如:将ID001替换为“这是一个例子。我想要这个。”这样做是:“这是一个例子。我想这样做。”

With Selection.Find
.ClearFormatting


chunks = Round(Len(replace) / 250, 0)                   
If Len(replace) Mod 250 > 0 Then chunks = chunks + 1      
If chunks = 1 Then
    .Execute FindText:=search, ReplaceWith:=replace, replace:=wdReplaceAll
Else

    .Execute FindText:=search, ReplaceWith:="{1}", replace:=wdReplaceAll

    ' Replace the text in chunks of less than 255 characters
    For i = 1 To chunks


        chunk = Mid(replace, ((i - 1) * 250) + 1, 250)


        If i < chunks Then chunk = chunk & "{" & (i + 1) & "}"

        .Execute FindText:="{" & i & "}", ReplaceWith:=chunk, replace:=wdReplaceAll
    Next i

End If

结尾为

2 个答案:

答案 0 :(得分:0)

尝试使用MatchCase:= False。例如:

.Execute FindText:=search, ReplaceWith:=replace, MatchCase:=False, Replace:=wdReplaceAll

答案 1 :(得分:0)

我知道这是一篇旧文章,但是我有同样的问题。 在玩了一段时间之后,这对我有所帮助。

我尝试过在替换文本上不设置任何格式,并尝试使用特定格式设置为不大写-仍然全部大写。

我发现,如果我搜索的整个文本都是大写的,它将全部变为大写。如果搜索文本中的第一个字母为大写,则替换文本中的第一个字母为大写。无论您采用哪种格式。

我有一个名为“ C-PTFE CIP”的文本,并希望在某些情况下添加更多内容,所有这些内容全部用大写出来。我的解决方法是在文本中添加更多“ ix C-PTFE CIP”,然后在替换文本中添加“ ix”。现在一切都随我所愿,不仅是小写字母,而且是我想要的。

因此,对于您的情况,请尽可能将“ ID”更改为“ id”,或者如果您很幸运,可以添加更多文本。

希望这可以在将来对其他人有所帮助。我不知道为什么格式不会覆盖搜索到的文本。也许文档中有其他设置?