替换文本时,尝试获取不同类型的引号字符时似乎存在问题:
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 Office365 ProPlus”。
如果未激活文件->选项->校对->自动更正选项->键入时自动套用格式->键入时替换->使用“智能引号”替换“直引号”,则不会出现此问题。当然,我希望无论手动输入的任何设置如何,宏都能工作。
如何更改代码以获得预期的结果?
发布于 2019-03-26 00:57:17
解决这类问题的方法是在代码期间关闭该选项,如果该选项处于打开状态,则将其重新打开。
下面的代码片段保存用户的设置,关闭该选项,然后恢复用户的设置(无论该选项是打开还是关闭)。
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 = bReplaceQuoteshttps://stackoverflow.com/questions/55302691
复制相似问题