zyablik Опубликовано 6 февраля, 2013 Опубликовано 6 февраля, 2013 (изменено) Есть работающий макрос, заменяющий один символ (в данном случае "ђ") на другой [в данном случае на "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"; Изменено 6 февраля, 2013 пользователем zyablik
ACIK Опубликовано 6 февраля, 2013 Опубликовано 6 февраля, 2013 Ну, как-то так: .Replacement.Text = ChrW(1241) или так: .Replacement.Text = ChrW(&H4D9) 1
zyablik Опубликовано 7 февраля, 2013 Автор Опубликовано 7 февраля, 2013 (изменено) Ну, как-то так:.Replacement.Text = ChrW(1241) Ай да МОЛОТОК, ACIK! --- Ну, разве что: в общем случае вместо ".MatchCase = False" должно быть ".MatchCase = True", дабы все маленькие заменяемые буквы не превратились в заглавные. Изменено 7 февраля, 2013 пользователем zyablik
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти