Макрос-переводчик

Обучим немецкому
языку по методу гестапо.

Работающие в иностранных компаниях сотрудники часто вынуждены готовить по два одинаковых отчета для отечественного и зарубежного своего начальства - на русском и английском языках. Цифры в этих отчетах, естественно, одинаковые, а меняются только подписи, заголовки и другой текст.

Такую задачу можно решить более изящно. Создаем новый лист в таком отчете и называем его "Словарь". Выписываем на этот лист в любом порядке все слова, которые надо автоматически переводить. Для каждого языка добавляем новый столбец, например, так:

translater1.gif

Потом переходим в редактор Visual Basic (меню Сервис - Макрос - Редактор Visual Basic), вставляем новый модуль (меню Insert - Module) и копируем туда текст вот этих двух макросов:

Sub Translate()
Dim cell1 as Range, cell2 As Range
Dim i as Long, Langs As Long 

Langs = 3 'количество языков перевода, включая русский

    For Each cell1 In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
        For Each cell2 In Worksheets("Словарь").Cells.SpecialCells(xlCellTypeConstants)
            If cell1.Value = cell2.Value Then
                i = cell2.Column
                If i = Langs Then i = 1 Else i = i + 1
                cell1.Value = Worksheets("Словарь").Cells(cell2.Row, i).Value
                GoTo 1
            End If
        Next cell2
1:   Next cell1

End Sub

Теперь можно вернуться на лист с отчетом и запустить макрос Translate через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) или нажав ALT+F8. Все слова из вашего отчета, найденные в на листе Словарь, будут заменены на слова из соседней колонки, т.е. переведены на другой язык. Запуская макрос несколько раз, мы будем по кругу переводить наш отчет последовательно на русский-английский-немецкий-русский-английский-и т.д. Выглядеть это будет так:

translater2.gif

Praktisch, nicht wahr? :)

Ссылки по теме

 


Владимир
10.10.2012 17:16:18
А формулы с русского на аглицкий он переводит? Вообще ИМХО это очень сглупил Микрософт, что функции сделал разноязычными, он бы еще макросы команды Visual Basic тоже для каждого языка свои установил:)
А даже если переведёт функции, они будут работать только в английском Экселе, да? Можно ли как-нибудь сделать так, чтобы функции работали в Экселях всех языков?
Жека
10.10.2012 17:17:21
Promt по сравнению с етим Туфта
22.08.2013 18:25:10
Я это проблему решаю подругому! Допустим у нас есть поля которые нужно перевести. Мы создаем в одной ячейки А1  всплывающую как бы кнопочку с двумя надписями русский и english например. И к каждой ячейки где мы хотим менять язык ставим условия. Н-р: =если(А1="русский"; А2="привет"; если(А1="english"; A2="hello"; Если А1=""; А2="привет"))

Тоже самое ко всем надписям.
Вуоля! Вы просто сверху меняете язык, а он вам меняет значение ячейки.
26.09.2013 11:36:05
возник вопрос: сократила количество языков до 2х, русс и англ.
изначально все заполнено на русском. запускаю макрос - отлично все на англ... а вот обратно некоторые позиции не перевелись на русский и получились пустые ячейки...
как так?))))
16.10.2014 15:50:35
Идея хорошая вот только работает для одного слова в ячейке, а как быть если в ячейке текст. Например
case black for Sony Xperia Z
case red for Sony Xperia Z
надо получить
чехол черный для Sony Xperia Z
чехол красный для Sony Xperia Z
имея два столбика по 1 слову в ячейке
case - чехол 
black - черный 
red - красный 
for - для
01.02.2015 01:16:13
Владимир,  функции работают в Экселях всех языков! Единственное - заносить на лист их нужно в варианте того экселя, в котором редактируете файл.
Есть некоторые исключения (например с форматом дат), но их можно побороть, если подготовиться.
22.10.2015 19:30:46
:)    
Спасибо огромное за этот макрос! Значительная экономия времени и избавление от никому ненужной работы!
Это же так важно- тратить время и усилия на действительно полезные вещи :-)