Что такое макросы

Что такое макросы

Программирование на минималках

Мы уже говорили про автоматизацию на компьютере — как сделать так, чтобы он сам запускал программы и обрабатывал данные. А ещё можно автоматизировать работу отдельной программы. За это отвечают макросы.

Что такое макрос

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

Где вы могли видеть макросы

Если вы когда-нибудь фотографировались на документы, вы наверняка видели такую картину: вас сфотографировали, поровняли голову по какому-то шаблону, убрали прыщи, а потом нажали какую-то кнопку — и за секунду у вас на листе шесть фотографий с логотипом фотомастерской, и всё выводится на печать. Это поработал макрос. 

Вот пример, как такие макросы программируются и используются: 

Какие бывают макросы

Обычно макросы бывают двух видов: 

  • Запись каких-то действий в программе — то есть только то, что вы бы могли сделать сами с клавиатуры или мышки.
  • Полноценная мини-программа на каком-то языке — внутреннем языке программы или на каком-то общеизвестном.

Часто в программах поддерживается и то и другое — например в Фотошопе можно записать макрос на панели Actions, и это будут только действия, доступные из меню Фотошопа. А ещё можно написать специальный скрипт для Фотошопа, у которого будут намного более широкие возможности. 

55 бесплатных макросов для Фотошопа.

Для чего они нужны

Задача любого макроса — автоматизировать всё так, чтобы несколько действий выполнялись как одно. 

Допустим, мы часто работаем с таблицами в Excel и нам часто приходится делать определённое оформление: выделять первую строку жирным, добавлять линию отбивки, выделять разным цветом фоны и т. д. Это можно сделать за минуту. Но минута — это ж минута! Представьте, что через нас в день проходит 120 таких таблиц. Чтобы каждый раз не делать триста движений, можно один раз записать макрос, который будет делать всё то же самое, но за секунду и по нажатию одной кнопки. 

Ещё примеры: 

  • Ставить на готовый документ водяные знаки и грифы, подшивать в архив, отправлять почтой, подавать на согласование. 
  • Делать много разных версий одного и того же файла (например, разные размеры фотографий для разных мест на сайте).
  • Отправлять один и тот же документ разным людям в разные отделы в разных форматах.
  • Автоматически заполнять договоры и другие документы; генерировать договоры по заданным условиям; выставлять счета и генерировать акты на основании одной карточки клиента.
  • Пакетно обрабатывать фотографии: накладывать эффекты, менять цвет.
  • Находить в документах потенциально опасный контент, как-то его помечать.
  • Находить в тексте ошибки, неверно поставленные кавычки или тире, убирать двойные пробелы.

И многое другое — смотря на что способна ваша программа. 

Программирование макросов

Чаще всего макросы делают так: нажимают кнопку «Записать макрос» и начинают выполнять действия в программе. Потом нажимают «стоп», и все записанные действия запоминаются как макрос. Когда этот макрос будет запущен, он моментально повторит те же самые действия, но с новыми данными.

Но есть второй способ — написать код с нуля. Например, для всех программ Microsoft Office макросы пишутся на языке VBA — Visual Basic for Application. Это специальная версия языка Visual Basic для приложений, на котором можно писать сложную логику.

Вот пример макроса для Microsoft Word, который убирает из текста двойные пробелы и пробелы перед запятой (автор — Яна Харина):

Sub Demo()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
`Заменяет двойной пробел на одинарный
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

With Selection.Find
`Заменяет двойной пробел на одинарный
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

With Selection.Find
`Заменяет тройной пробел на одинарный
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
`Убирает пробел перед запятой
.Text = " ,"
.Replacement.Text = ","
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

End Sub

А этот макрос для Экселя сохраняет каждый лист как отдельный PDF-файл — полезно, если надо переслать отчёт клиенту по почте, чтобы он его мог открыть его где угодно:

Sub SaveWorkshetAsPDF()
Dim ws As Worksheet
For Each ws In Worksheets
ws.ExportAsFixedFormat xlTypePDF, "C:UsersSumitDesktopTest" & ws.Name & ".pdf"
Next ws
End Sub

Напоследок — макрос для всех, кто работает с комментариями в Экселе. Комментарии там обозначаются маленьким треугольничком, который легко пропустить. Этот макрос подсвечивает все ячейки с комментариями — они становятся заметными, и сразу ясно, на что обратить внимание:

Sub HighlightCellsWithComments()
ActiveSheet.Cells.SpecialCells(xlCellTypeComments).Interior.Color = vbBlue
End Sub

Ещё больше макросов для Экселя на сайте TrumpEXCEL.

Макросы в оборудовании

Поддержка макросов бывает даже у клавиатур и мышей — у них есть программируемые кнопки, к которым можно привязать выполнение каких-то действий. А ещё можно собрать под себя клавиатуру, где каждая кнопка будет отвечать за какое-то своё действие: открыть файл, запустить программу, настроить уровень яркости в комнате и так далее.

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

В кастомных клавиатурах на клавиши можно вешать целые конструкции из кода, комбинации горячих клавиш и всякие сложные последовательности нажатий. Например, можно запрограммировать макрос «Изображать бурную деятельность», который будет двигать курсором по экрану и делать вид, что вы над чем-то думаете. Нажимаете клавишу, откидываетесь в кресле, и, если работодатель захочет понаблюдать за вами через удалённый доступ, он будет уверен, что вы крепко задумались над кодом. 

Макросы на уровне операционной системы

В MacOS встроено приложение Automator, которое помогает писать и исполнять макросы на уровне операционки: работать с файлами, немного управлять стандартными программами системы и даже залезать в некоторые сторонние приложения, если они поддерживают нужные API. 

Вот что в нём можно сделать (например):

  • Склеить несколько PDF в один большой документ.
  • Одной кнопкой сделать текстовый документ из содержимого буфера обмена и сохранить в нужное место.
  • Массово переименовать файлы.
  • Открыть определённый набор сайтов одной кнопкой.
  • Озвучить выделенный текст голосом и сохранить аудиофайл, куда нужно.
  • Скачать откуда-нибудь какую-нибудь картинку и дальше что-то с ней сделать.

И есть всякие надстройки на Automator, чтобы работать с изображениями, документами и отдельными программами. Когда людям надо, они пишут такие скрипты и делятся с сообществом. 

Подборка готовых скриптов для Автоматора на Гитхабе.

Что такое макросы
Automator — мощный редактор скриптов для MacOS. С ним можно запрограммировать почти всё, что касается работы компьютера

Что делать, если программа не поддерживает макросы

Если в программе нет встроенной поддержки макросов, можно скачать специальный софт — он запишет ваши действия и сможет повторять их в любой нужный момент. Как-нибудь доберёмся и до этого — выпустим отдельную подборку программ для создания своих макросов на уровне системы.

Что дальше

Теперь, когда мы знаем про макросы, попробуем поработать с ними в деле — сделаем свои макросы для Word и Excel. Подпишитесь, чтобы не пропустить проект и сэкономить себе время в будущем.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Что такое исключения в программировании
Что такое исключения в программировании

Рассказ об ошибках, которые можно предусмотреть заранее.

easy
Можно ли стать разработчиком, если учиться по вечерам
Можно ли стать разработчиком, если учиться по вечерам

Текст о стратегии обучения в сфере ИТ

easy
Что такое код-ревью
Что такое код-ревью

Это проверка кода на ошибки, неточности и общий стиль программирования.

easy
Что такое интернет вещей
Что такое интернет вещей

И что вещи делают в интернете, когда мы не смотрим

easy
Какие бывают базы данных
Какие бывают базы данных

Объясняем на картинках.

easy
Как прокачать буфер обмена
Как прокачать буфер обмена

И что это вообще такое

easy
Что такое сокет и зачем он нужен
Что такое сокет и зачем он нужен

Как приложения звонят в интернет с вашего компьютера и получают ответы

easy
Карьерные перспективы в ИТ с учетом сложившейся ситуации
Карьерные перспективы в ИТ с учетом сложившейся ситуации

Что нужно знать тем, кто хочет стать айтишником в 2022-м году

easy
Что такое обратная совместимость
Что такое обратная совместимость

Это когда старая игра запускается на новой приставке

easy
Что такое технический долг
Что такое технический долг

Фраза из лексикона сильных профессионалов

easy
easy