Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.11.2007, 09:51   #1
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию Как преобразовать русские буквы в латиницу?

Привет всем! Подскажите макро который помогает переводить русские буквы в латиницу

Например ячейка
А1 Москва
А2 Самара
и т.д.

Перевод:
В1 Moskva
B2 Samara

Спасибо!
Spasibo!
Alexander_Gr вне форума
Старый 30.11.2007, 11:22   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Код:
Private Sub MyTranslit()

iRussian$ = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
iEnglish = Array("", "a", "b", "v", "g", "d", _
"e", "jo", "zh", "z", "i", "jj", "k", "l", "m", _
"n", "o", "p", "r", "s", "t", "u", "f", "h", "c", _
"ch", "sh", "zch", "''", "'y", "'", "eh", "ju", "ja")

With ThisWorkbook.Worksheets(1)
     'Укажите свою рабочую книгу, рабочий лист
     If Not .ProtectContents Then
        With .Range(.[A1], .[A65536].End(xlUp)).Offset(, 1)
             .Value = .Offset(, -1).Value
             'При работе с диапазоном имеет смысл ознакомиться и
             'воспользоваться следующими свойствами
             'об'екта Application :
             'ScreenUpdating, Calculation
             'а при необходимости, ещё и нижеперечисленными :
             'EnableEvents, DisplayAlerts, EnableCancelKey
             For iCount% = 1 To Len(iRussian$) '33
                 iSmbRus$ = Mid(iRussian, iCount%, 1)
                 iSmbEng$ = iEnglish(iCount%)
                 .Replace What:=iSmbRus$, Replacement:=iSmbEng$, MatchCase:=True
                 .Replace What:=StrConv(iSmbRus$, vbProperCase), _
                 Replacement:=StrConv(iSmbEng$, vbProperCase), MatchCase:=True
             Next
             'Для аналогичных действий со строкой можно использовать
             'стандартную функцию рабочего листа ПОДСТАВИТЬ()
             'Application.Substitute(), WorksheetFunction.Substitute() 'и т.п.
             '(которая чувствительна к регистру)
             'или функцию Replace(), которая появилась в MS Office2000(VB6)
             '(эта функция имеет аргумент Compare, позволяющий осуществлять
             'замену без учёта регистра)
        End With
     Else
        MsgBox "Рабочий лист защищён", vbCritical, ""
        'Для того, чтобы изменить значение защищённой ячейки можно :
        '- использовать необязательный именованный аргумент
        'UserInterfaceOnly:=True метода Protect, причём,
        'для версий MS Excel 97, 2000 указание существ. пароля необязательно
        '- или снять, а затем, после всех изменений,
        'программно установить нужный пароль
        'В MS Excel XP можно использовать метод Replace в защищённом листе,
        'но замена будет осуществляться только в незащищённых ячейках
     End If
End With

End Sub
P.S. Символы транслита могут быть изменены в соответствии с личными требованиями.
pashulka вне форума
Старый 30.11.2007, 14:59   #3
WIC
Форумчанин Подтвердите свой е-майл
 
Регистрация: 21.09.2007
Сообщений: 138
По умолчанию

я кажется поднимал тему такую.
решил ее с помощью программы Пунто.
Если она у вас установлена, можно воспользоваться.
WIC вне форума
Старый 30.11.2007, 22:55   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Не могу не заметить, что программа Punto не имеет отношения к Microsoft Excel, а ведь именно в этом разделе опубликован поставленный вопрос. А вот мой макрос, который также справляется с этой задачей, имеет самое прямое отношение, впрочем, тот же принцип можно использовать и в Microsoft Word, но это уже совсем другая история.
pashulka вне форума
Старый 02.12.2007, 12:57   #5
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию

Спасибо!
Alexander_Gr вне форума
Старый 02.12.2007, 19:18   #6
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию

pashulka, а можно сделать что бы текст переводился не на другой столбец а заменятся в тех же ячейках где текст русскими буквами?

Например:

Была ячейка

A1: Привет всем

Стала:

A1: Privet vsem
Alexander_Gr вне форума
Старый 02.12.2007, 19:52   #7
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Код:
With ThisWorkbook.Worksheets(1)   
        ...
        With .Range("A:A") 'укажите нужный столбец
               For iCount% = 1 To Len(iRussian$) '33
               ...
pashulka вне форума
Старый 03.12.2007, 14:51   #8
Alexander_Gr
Пользователь
 
Регистрация: 16.11.2007
Сообщений: 15
По умолчанию

pashulka, а можно сделать что бы не только A ячечи заменялись, а все которые в листе рабочем?
Alexander_Gr вне форума
Старый 03.12.2007, 19:49   #9
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Производить замену во всех (Cells) ячейках рабочего листа, не имеет особого смысла, т.к. вполне достаточно заменить .Range(...) на .UsedRange
pashulka вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русские буквы в TurboPascal DartMrakkk Паскаль, Turbo Pascal, PascalABC.NET 4 10.03.2009 21:51
Как предать в MySQL русские буквы kiber0net0 БД в Delphi 6 05.09.2008 22:07
Русские идентификаторы в Delphi for .Net (BDS 2006) natador Общие вопросы Delphi 0 20.06.2008 17:55
DEV C++ не читает русские буквы gumar Общие вопросы C/C++ 1 21.04.2008 09:53
Из файла не читаются русские буквы. snaem Общие вопросы .NET 3 31.03.2008 23:05