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

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

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

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

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

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

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

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

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

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

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

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

Часто в программах поддерживается и то и другое — например в Фотошопе можно записать макрос на панели 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