Работающие в иностранных компаниях сотрудники часто вынуждены готовить по два одинаковых отчета для отечественного и зарубежного своего начальства - на русском и английском языках. Цифры в этих отчетах, естественно, одинаковые, а меняются только подписи, заголовки и другой текст.
Такую задачу можно решить более изящно. Создаем новый лист в таком отчете и называем его "Словарь". Выписываем на этот лист в любом порядке все слова, которые надо автоматически переводить. Для каждого языка добавляем новый столбец, например, так:
Потом переходим в редактор 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
Sub ScanText() 'этот макрос копирует все слова текущей книги в
' столбец А на лист "Словарь"
i = 0
For Each sht In ActiveWorkbook.Sheets
If sht.Name = "Словарь" Then GoTo 2
For Each cell In sht.Cells.SpecialCells(xlCellTypeConstants)
c = Asc(cell.Value)
If (c >= 65 And c <= 122) Or (c >= 192 And c <= 255) Then
cell.Copy Destination:=Worksheets("Словарь").Range("A1").Offset(i, 0)
i = i + 1
End If
Next cell
2: Next sht
End Sub
Теперь можно вернуться на лист с отчетом и запустить макрос Translate через меню Сервис - Макрос - Макросы (Tools - Macro - Macros). Все слова найденные в на листе Словарь будут переведены на другой язык. Запуская макрос несколько раз, мы будем по кругу переводить наш отчет последовательно на русский-английский-немецкий-русский-английский-и т.д.
Макрос ScanText поможет при создании листа "Словарь". Этот макрос сканирует все листы текущей книги и копирует все текстовые ячейки (начинающиеся с букв русского или латинского алфавита) в первый столбец листа "Словарь". Вам останется лишь дописать перевод этих слов в соседние столбцы.