Цитата в Microsoft Word найти и заменить - PullRequest
0 голосов
/ 22 марта 2019

Кажется, есть проблема при попытке получить различные типы символов кавычек при замене текста:

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 профессиональный плюс 2013» и «Microsoft Office 365 ProPlus».

Проблема не возникает, если не активирован Файл-> Параметры-> Проверка → Параметры автозамены-> Автоформат по мере ввода-> Заменить при вводе -> «Прямые кавычки» с «умными кавычками» не активированы. Конечно, я хочу, чтобы макрос работал независимо от настроек ручного ввода.

Как изменить код для получения ожидаемого результата?

1 Ответ

1 голос
/ 25 марта 2019

Способ решения этой проблемы состоит в том, чтобы отключить параметр на время действия кода, а затем снова включить его, если он был включен.

Следующий фрагмент кода сохраняет настройки пользователя,отключает параметр, а затем восстанавливает настройки пользователя (независимо от того, была эта опция включена или нет).

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...