Microsoft Word中的报价查找和替换

时间:2019-03-22 15:13:11

标签: vba ms-word

替换文本时尝试获取不同的o引号字符似乎存在问题:

With ActiveDocument.Content.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "\{QUOTE:(*):QUOTE\}"
    .Replacement.Text = Chr(147) & "\1" & Chr(148)
    .Forward = True
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
End With

文档包含以下内容时:{QUOTE:abc:QUOTE}

代码给出:“ abc”

但预期结果是:“ abc”

Word版本:“ Microsoft Office Professional Plus 2013”​​和“ Microsoft Office 365 ProPlus”。

当未激活“文件”->“选项”->“校对”->“自动更正选项”->“键入时自动套用格式”->“键入时替换”->带有“智能引号”的“直引号”时,不会发生此问题。当然,无论手动设置如何,我都希望宏能够正常工作。

如何更改代码以获得预期的结果?

1 个答案:

答案 0 :(得分:1)

解决此类问题的方法是在代码运行期间关闭该选项,然后再次打开该选项。

以下代码段保存了用户的设置,关闭了该选项,然后恢复了用户的设置(无论该选项是打开还是关闭)。

Dim bReplaceQuotes as Boolean
'Save the user's setting
bReplaceQuotes = Options.AutoFormatAsYouTypeReplaceQuotes
Options.AutoFormatAsYouTypeReplaceQuotes = False
'Do the FindReplace
'Restore the user's settings at the end
Options.AutoFormatAsYouTypeReplaceQuotes = bReplaceQuotes