替换文本时尝试获取不同的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”。
当未激活“文件”->“选项”->“校对”->“自动更正选项”->“键入时自动套用格式”->“键入时替换”->带有“智能引号”的“直引号”时,不会发生此问题。当然,无论手动设置如何,我都希望宏能够正常工作。
如何更改代码以获得预期的结果?
答案 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