Перейти к содержанию

Нужен совет по макросу (Word)


Рекомендуемые сообщения

Опубликовано (изменено)

Есть работающий макрос, заменяющий один символ (в данном случае "ђ") на другой [в данном случае на "A" — Chr$(65)]:

Sub ZamenaTT()

' Замена букв - Макрос

'

ActiveWindow.View.ReadingLayout = Not ActiveWindow.View.ReadingLayout

If ActiveWindow.View.SplitSpecial = wdPaneNone Then

ActiveWindow.ActivePane.View.Type = wdNormalView

Else

ActiveWindow.View.Type = wdNormalView

End If

Selection.Find.Execute Replace:=wdReplaceAll

With Selection.Find

.Text = "ђ"

.Replacement.Text = Chr$(65)

.Forward = True

.Wrap = wdFindContinue

.Format = False

.MatchCase = False

.MatchWholeWord = False

.MatchWildcards = False

.MatchSoundsLike = False

.MatchAllWordForms = False

End With

Selection.Find.Execute Replace:=wdReplaceAll

ActiveWindow.View.ReadingLayout = Not ActiveWindow.View.ReadingLayout

End Sub

Хочется, чтобы замена шла на символ, который выводится (в Word'e!) при наборе 1241 с нажатой клавишей Alt — это "ә" (так надо). Но применение Chr$(1241) вызывает ошибку при запуске макроса (Invalid procedure call or argument — т.е. 1241 ему не нравится).

Если есть спецы, подскажите.

Спасибо.

P.S. При наборе вот в этом окне же — 1241 с нажатой клавишей Alt - получается "┘", увы.

P.P.S. Судя по http://unicode-table.com/ru/#04D9 :

Кириллическая строчная буква =шва=

Cyrillic small letter schwa

Номер в юникоде: 04D9

HTML-код: ә

Кстати, HTML-код: = & # 1 2 4 1 ; = тут автоматически заменяется на "ә"...

P.P.P.S.

На http://forum.ixbt.com/topic.cgi?id=26:36975 нашел вот что:

...Консоль может отобразить 256 различных символов, что она унаследовала от DOS. Соответственно, она не может отобразить любой Unicode-символ. Она может отобразить только эти самые 256 символов из своей собственной кодовой страницы. В Вашем случае, эта кодовая страница наверняка 866. Функция VB.Net Chr() для преобразования кода символа в Unicode-символ использует другую кодовую страницу, а именно System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage. Которая, скорее всего, 1251. Набор символов в этих кодовых страницах разный. Поэтому, некоторые из символов, полученных с помощью Chr, в общем случае, не могут быть отображены в консоли в принципе. Вместо них появятся "?".
Но это Си, к сожалению.

---

Ышшо.

По http://xpoint.ru/know-how/Perl/PodderzhkaU...de#FunktsiyaChr

Функция chr

Конвертирует число в символ, где число - это код символа. В версиях 5.8, с приходом unicode, действие функции немного расширилось, а точнее, если аргумнт число больше 255, то функция считает число code point'ом unicode и возвращает соответствующий символ в скаляре с установленным флагом UTF-8.

Пример: конвертирование HTML entities.

my $str = "тест";

$str =~ s/([a-fA-F0-9]+);/"". hex($1) .";"/ge;

$str =~ s/([0-9]+);/chr($1)/ge;

print "$str\n";

Изменено пользователем zyablik
Опубликовано

Ну, как-то так:

.Replacement.Text = ChrW(1241)

или так:

.Replacement.Text = ChrW(&H4D9)

:)

  • Согласен 1
Опубликовано (изменено)
Ну, как-то так:.Replacement.Text = ChrW(1241) :huh:
Ай да МОЛОТОК, ACIK! :)

---

Ну, разве что: в общем случае вместо ".MatchCase = False" должно быть ".MatchCase = True", дабы все маленькие заменяемые буквы не превратились в заглавные.

Изменено пользователем zyablik

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...