Добавить в корзинуПозвонить
Найти в Дзене

Правка 70 слайдов за 2 секунды: история одного VBA-скрипта

Однажды переводчик мне сдал перевод презентации в билингве SDL Trados (*.sdlxliff). Обычная презентация, русско-английский перевод, тема — ИТ-маркетинг, заказчик торопит. Моя задача — проверить перевод презентации и подготовить ее «под ключ». Выгрузил я ее из билингвального файла. И тут, на этапе сверки, обнаружил деталь. В исходнике в заголовках и в конце пунктов маркированного списка никаких точек не было. А у переводчика они везде, в конце каждого предложения (дурная привычка, у меня такая же). Казалось бы, мелочь. Пройтись, да удалить автозаменой (хотя, в PowerPoint поиск вообще реализован крайне убого). Но была сложность — нельзя было удалять все точки. Некоторые текстовые блоки содержали не один пункт, а два-три предложения. В таких блоках точка после последнего предложения была не нужна, а вот между предложениями — очень даже. Поэтому вариант автозамены «точка на ничто» не катит. Значит, нужно удалять точку только в том случае, если она стоит в самом конце всего текста в конкр

Однажды переводчик мне сдал перевод презентации в билингве SDL Trados (*.sdlxliff). Обычная презентация, русско-английский перевод, тема — ИТ-маркетинг, заказчик торопит.

Моя задача — проверить перевод презентации и подготовить ее «под ключ». Выгрузил я ее из билингвального файла. И тут, на этапе сверки, обнаружил деталь. В исходнике в заголовках и в конце пунктов маркированного списка никаких точек не было. А у переводчика они были везде, в конце каждого предложения (дурная привычка, у меня такая же).

Казалось бы, мелочь. Пройтись, да удалить автозаменой (хотя, в PowerPoint поиск вообще реализован крайне убого). Но была сложность — нельзя было удалять все точки. Некоторые текстовые блоки содержали не один пункт, а два-три предложения. В таких блоках точка после последнего предложения была не нужна, а вот между предложениями — очень даже.

Поэтому вариант автозамены «точка на ничто» не катит. Значит, нужно удалять точку только в том случае, если она стоит в самом конце всего текста в конкретном фрейме. Перспектива делать это вручную на 70 слайдах, где по 5-10 списков и фреймов — у меня лично восторга не вызвала. Да и то, остается риск пропустить что-то. Да и заказ, как я уже говорил, срочный. Да и я ленивый.

В общем, решение напросилось само — надо это как-то автоматизировать. Нужен скрипт, который сам пройдет по всей презентации и сделает за меня эту обезьянью работу.

Логика тут простая. Скрипт должен:

  1. Начать с первого слайда и пойти по порядку до последнего.
  2. На каждом слайде проверить все объекты — текстовые поля, заголовки, фигуры с текстом.
  3. Если у объекта есть текстовый фрейм и в нем есть текст, взять этот текст для анализа.
  4. Проверить последний символ в тексте. Если это точка — удалить ее.
  5. На всякий случай проверить несколько последних символов, вдруг там последний символ не точка, а пробел. Значит, удалить и то, и другое.
  6. Перейти к следующему объекту и повторить.

Промпт получился незатейливым:

Напиши код для VBA для PowerPoint, который перебирает все слайды, а на слайдах все фреймы, и если в конце фрейма текст заканчивается на точку или на точку с пробелом, то он эту точку удаляет.

По этому промпту ИИ родил рабочий VBA-скрипт (ссылка на код):

-2

Окей, скрипт получил, надо применить — тут меня ждала другая засада. Я по привычке, как в MS Word, нажал Alt+F11, думал, откроется редактор Visual Basic. Хренушки. Открылось какое-то серое окно.

-3

Куда вставлять код — непонятно. Почитал, выяснил, нужно пройти в меню Insert -> Module. Вот тогда появится белое поле, похожее на блокнот. Туда и копируется скрипт.

-4

Дальше уже понятно, что делать — жму кнопку Run (зеленый треугольник) на панели инструментов. За пару секунд макрос пробежал по всем 70 слайдам. Я проверил за ним, да, он прибил все ненужные точки.

-5

Правда, при сохранении PowerPoint предупредил, что обычный формат .pptx макросы не поддерживает, и предложил сохранить файл как «Презентация PowerPoint с поддержкой макросов» (.pptm). Согласился, куда деваться.

---

Вдохновившись успехом, я решил автоматизировать и другую задачу: найти в презентации все вхождения слова manufacturer и подсветить их маркером — мне нужно было, исходя из контекста переправить перевод на vendor.

Но тут я уже обломался. За 5 попыток ИИ так и не смог родить рабочий рабочий код — не нашел нужную команду для выделения текста цветом в PowerPoint. С подобной функцией в MS Word он справился бы на лету, а тут забуксовал, видимо, команда иная.

Можно было, конечно, подебажить код час-другой, но я прикинул, что вхождений слова не так много — ручками поправлю. Так и сделал, нашел все через Ctrl+F, там же на месте вручную и отредактировал. Вот эта операция получилась быстрее именно вручную.

Так что где-то автоматизация рулит, где-то «очумелые ручки».

Спасибо за внимание.

Надеюсь было полезно.

Если да, подписывайтесь.

Наука
7 млн интересуются