引用Microsoft Word查找和替换

问题描述 投票:0回答:1

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

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”。

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

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

vba ms-word
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.