Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Marlenx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[more] Excel работает как функция, как преобразовать код транслит на Word (Sub - End Sub)
 
Public Function CYR2LAT(ByVal sCYR As String) As String
 Dim ci As Integer
 Dim iChars As Integer
 Dim ArrCYR  
 Dim ArrLAT  
 
 ArrCYR = Array("а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", _
 "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ъ", "ы", "э", "ю", "я", _
 "А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", _
 "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ь", "Ъ", "Ы", "Э", "Ю", "Я")
 ArrLAT = Array("a", "b", "v", "g", "d", "e", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", _
 "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "shch", "", "", "y", "e", "yu", "ya", _
 "A", "B", "V", "G", "D", "E", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", _
 "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Shch", "", "", "Y", "E", "Yu", "Ya")
 
 iChars = UBound(ArrCYR)
 'Предобработка
 CYR2LAT = sCYR
 'Замена Ё на Е
 CYR2LAT = Replace(CYR2LAT, "Ё", "Е")
 CYR2LAT = Replace(CYR2LAT, "ё", "е")
 'Если первая в слове Е, то меняем на Йе
 CYR2LAT = ReReplace(CYR2LAT, "(^|[^А-Яа-я])Е", "$1Ye")
 CYR2LAT = ReReplace(CYR2LAT, "(^|[^А-Яа-я])е", "$1ye")
 'Меняем Е после гласной и ЪЬ на Йе
 CYR2LAT = ReReplace(CYR2LAT, "([аяоёыиэеуюъьАЯОЁЫИЭЕУЮЪЬ])е", "$1ye")
 CYR2LAT = ReReplace(CYR2LAT, "([аяоёыиэеуюъьАЯОЁЫИЭЕУЮЪЬ])Е", "$1Ye")
 'Замена по массиву
For ci = 0 To iChars
 CYR2LAT = Replace(CYR2LAT, ArrCYR(ci), ArrLAT(ci))
 Next ci
 End Function
 
 Function ReReplace(ByVal ReplaceIn, ByVal ReplaceWhat As String, _
 ByVal ReplaceWith As String, Optional ByVal IgnoreCase As Boolean = False)
 Dim RE As Object
 Set RE = CreateObject("vbscript.regexp")
 RE.IgnoreCase = IgnoreCase
 RE.Pattern = ReplaceWhat
 RE.Global = True
 ReReplace = RE.Replace(ReplaceIn, ReplaceWith)
 End Function

Всего записей: 1 | Зарегистр. 01-04-2012 | Отправлено: 22:48 01-04-2012 | Исправлено: Marlenx, 22:49 01-04-2012
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru