1

Тема: Поиск кириллических букв по их кодам

При решении одной проблемы с помощью макроса передо мной встала задача выполнить в цикле поиск и замену кириллических букв.
Оказалось, что поиск и замена кириллических букв А-Я осуществляется в режиме Учитывать регистр с помощью кодов ^128-^159, а букв а-п – с помощью кодов ^160-^175. Однако, символы с кодами ^176 и далее уже не соответствуют буквам р-я.
Буду признателен, если вы посоветуете мне, каким образом выполнить поиск и замену букв р-я с помощью кодов типа ^nnn.

На родственном сайте methodichka.ru (внешняя ссылка) я нашел таблицу кодов для кириллических букв:

Кириллица - Cyrillic (0400-04FF)
&H401 (1025) - кириллическое Ё
&H410 (1040) - кириллическое А
&H42F (1071) - кириллическое Я
&H430 (1072) - кириллическое а
&H44F (1103) - кириллическое я
&H451 (1105) - кириллическое ё

Однако я не совсем понимаю, как эти коды можно применить для поиска и замены.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

2

Re: Поиск кириллических букв по их кодам

Alex_Gur пишет:

...поиск и замена кириллических букв ... осуществляется в режиме Учитывать регистр с помощью кодов ^128-^159...

В режиме "Подстановочные знаки" ВСЕГДА учитывается регистр.

Для поля "Найти" есть спецсимвол ^u0000, где 0000 - код Unicode.

В поле "Заменить на" символы можно вставлять через буфер. Например, добавив их в документ через диалог "Символ" и скопировав.

С макросами проще:
.Find.MatchWildcards = True
.Find.Text = "[" & ChrW(&H400) & "-" & ChrW(&H4FF) & "]"

Макросы под заказ и готовый пакет - mtdmacro.ru

3

Re: Поиск кириллических букв по их кодам

Вождь пишет:
Alex_Gur пишет:

...поиск и замена кириллических букв ... осуществляется в режиме Учитывать регистр с помощью кодов ^128-^159...

В режиме "Подстановочные знаки" ВСЕГДА учитывается регистр.

Для поля "Найти" есть спецсимвол ^u0000, где 0000 - код Unicode.

В поле "Заменить на" символы можно вставлять через буфер. Например, добавив их в документ через диалог "Символ" и скопировав.

С макросами проще:
.Find.MatchWildcards = True
.Find.Text = "[" & ChrW(&H400) & "-" & ChrW(&H4FF) & "]"

Большое спасибо, Александр!
Теперь понятно, что кириллические буквы имеют коды с ^u1040 по ^u1103.

Мне это нужно для решения задачи, описанной здесь:
http://wordexpert.ru/forum/viewtopic.php?pid=7505#p7505

В поле "Заменить на" и в аналогичном месте в макросе параметры типа ^u0000 не принимаются.
Мне же нужно было рассчитать код в цикле. Поэтому второе решение оказалось очень полезным.

VBA корректно принял следующее выражение:
.Replacement.Text = ChrW(b1)
где b1 - это код символа в числовом формате.

Очень интересная функция ChrW, которая преобразует число в соответствующий символ Юникода!

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.