Я уже рассказывал о переводе файлов Excel в простых случаях, а сегодня рассмотрим более сложный пример — для тех, кто не боится скопировать несколько строк кода в редактор макросов.
Итак. Клиент прислал на перевод таблицу Excel следующего вида:
(по щелчку откроется полноразмерный скриншот)
Таких строк — около тысячи, а от меня требуется вписать перевод в желтые ячейки под оригиналом! Как они собираются обрабатывать результаты в таком формате, грязные извращенцы?! Ну да неважно: если получится применить САТ-программу, перевод ускорится, а проверять его в Trados гораздо удобнее, чем в Excel.
После нескольких экспериментов я остановился на следующем решении. Переводим исходный файл в любой САТ-среде, открываем переведенный файл и переименовываем текущий лист, например, в Sheet2. В меню «Правка» выбираем «Переместить или скопировать лист», открываем исходный файл и копируем туда лист с переводом. Теперь на листе Sheet1 расположен оригинал, а листе Sheet2 — перевод:
Запускаем макрос нажатием F5. Выделяем диапазон ячеек и нажимаем ОК: в каждую пустую ячейку в выбранном диапазоне будет скопирован перевод со второго листа. Вот результат:
Перед сохранением файла не забудьте удалить второй лист и модуль с макросом. Готово! Макросы не такие страшные, как их представляют :-)
Если вы можете придумать более быстрое решение для перевода таких таблиц — поделитесь.
Навскидку пришло такое решение:
1. Отфильтровать диапазон ячеек по содержимому или цвету.
2. Вставить перевод.
3. Снять фильтры.
4. PROFIT!
На шаге 2 вы получите сообщение “данная команда неприменима для несвязных диапазонов”.
Максим, скопировать не страшно, но это если попадется такой же точно случай. А вообще VBA долго учить и что посоветуете из литературы, чтобы только мясо и без лишней воды? :)
Не соглашусь. Наоборот, мне кажется, это простой пример, который можно адаптировать под конкретный случай. Вам что-то в этом коде непонятно?
Я никогда не учил VBA по учебникам, но прочитал справку, которая идет в комлекте с Excel. Если же справки не хватает, я просто набираю в поисковике что-то вроде “Excel VBA offset values” — для непрофессионального кодинга этого обычно достаточно.
Логика понятна, а вот, как оно будет адаптироваться, станет ясно на практике. :)