Прежде всего, Chr(171)
и Chr(187)
не являются угловыми кавычками. Они могут быть в определенных местах, но в других они будут разными персонажами. Вы хотите использовать ChrW(171)
и ChrW(187)
.
. Имея это в виду, ваш код действительно работает и корректно заменяет цитату, но затем Word Файл - Параметры - Проверка - Параметры автозамены - Автоформат по мере ввода - Прямые кавычки с умными кавычками запускается и заменяет окончательные «
с “
.
Один из вариантов - отключить эту функцию:
Dim prev_value As Boolean
prev_value = Application.Options.AutoFormatAsYouTypeReplaceQuotes
Application.Options.AutoFormatAsYouTypeReplaceQuotes = False
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Execute FindText:=ChrW$(171) & " ", _
ReplaceWith:=ChrW$(171), _
Replace:=wdReplaceAll, _
Forward:=True, _
Wrap:=wdFindContinue
End With
Application.Options.AutoFormatAsYouTypeReplaceQuotes = prev_value
Другой вариант - использовать сопоставление с подстановочными знаками, захватывать кавычку anlge как отдельную группу и упоминать ее в замене. подстановочный знак:
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Execute FindText:="(" & ChrW$(171) & ")( )", _
MatchWildcards:=True, _
ReplaceWith:="\1", _
Replace:=wdReplaceAll, _
Forward:=True, _
Wrap:=wdFindContinue
End With
По какой-то причине в этом случае функция умного цитирования не срабатывает.