- Что такое макрос
- Отображение вкладки «Разработчик» в ленте меню
- Запись макроса в Excel
- Что записывает макрос?
- Абсолютная и относительная запись макроса
- Что нельзя сделать с помощью макрорекодера?
- Расширение файлов Excel, которые содержат макросы
- Где вы могли видеть макросы
- Какие бывают макросы
- Для чего они нужны
- Программирование макросов
- Макросы в оборудовании
- Макросы на уровне операционной системы
- Сторонние приложения
- BotMek
- Hotkeycontrol
- Key Manager
- Free Macro Recorder
- AutoHotkey
- Что делать, если программа не поддерживает макросы
Что такое макрос
Макрос — это небольшая программа, которая запускается внутри другой программы, такой как Photoshop или Excel. Вы можете сами написать эту программу и таким образом автоматизировать свою работу.
Отображение вкладки «Разработчик» в ленте меню
Перед тем как макро записыватьс, недвижимость на ленту меню Excel вкладка «Разболчик». Для этого выполните следующие шаги:
- Щелкните правой кнопкой мыши на любой из существующих вкладок на ленте и нажмите «Установить ленту». Откроется диалоговое окно «Параметры Excel».
- В диалоговом окне «Параметры Excel» у вас появятся параметры «Установить ленту». Справа от панели «Основные вкладки» установите флаг «Разработчик».
- Нажмите «ОК».
В результате в меню ленты появится вкладка «Разработчик»
Запись макроса в Excel
Теперь давайте напишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например «Excel».
Вот шаги для записи такого макроса:
- Перейдите на вкладку «Разработчик».
- В группе «Код» нажмите кнопку «Записать макрос». Откроется одноименное диалоговое окно.
- В диалоговом окне «Запись макроса» введите имя вашего макроса, например «InputText». При указании макроса необходимо соблюдать несколько условий именования. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять названия макросов одним словом, с разными частями с первым алфавитом в названии. Вы также можете использовать символы подчеркивания для разделения двух слов, например, «Ввод_текста».
- Если вы хотите, вы можете установить комбинацию клавиш. В этом случае мы будем использовать сочетание клавиш Ctrl + Shift + N. Помните, что указанная вами комбинация переопределит любые существующие горячие клавиши в вашей книге. Например, если вы указали комбинацию Ctrl+S, вы не сможете использовать ее для сохранения книги (вместо этого каждый раз, когда вы ее используете, она будет выполнять макросы).
- В поле «Сохранить в» убедитесь, что выбран вариант «Эта книга». Этот шаг гарантирует, что макрос является частью книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
- При необходимости введите описание. Обычно я этого не делаю, но если у вас много макросов, лучше указать их, чтобы в будущем не забыть, что делают макросы.
- Нажмите «ОК». Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку «Остановить запись» на вкладке «Разработчик», которая указывает на то, что вы запускаете запись макроса.
- Выберите ячейку A2.
- Введите текст «Excel» (или вы можете использовать свое имя).
- Нажмите клавишу ввода. Вы приземлитесь на ячейку A3.
- Нажмите кнопку «Остановить запись» на вкладке «Разработчик».
Поздравляем! Вы только записали свой первый макрос в Excel. Хотя макросы не делают ничего полезного, они помогут нам понять, как работают средства записи макросов в Excel.
Теперь давайте посмотрим на код, который записал макрорекордер. Выполните следующие действия, чтобы открыть редактор кода:
- Удалите текст в ячейке A2. Это необходимо, чтобы проверить, будут ли макросы вставлять текст в ячейку A2 или нет.
- Выберите любой вариант, кроме А2. Необходимо проверить, выбрана ли макроячейка A2 или нет.
- Перейдите на вкладку «Разработчик».
- В группе «Код» нажмите кнопку «Макросы».
- В диалоговом окне «Макрос» щелкните макрос «Ввод текста».
- Нажмите кнопку «Выполнить».
Вы увидите, что когда вы нажмете кнопку «Заполнить», текст «Excel» будет вставлен в ячейку A2, а ячейка A3 будет выбрана. Это происходит за миллисекунды. Но на самом деле макросы стабильно завершали записанные действия.
Примечание. Вы также можете запускать макросы комбинацией клавиш Ctrl+Shift+N (зажмите клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот самый ярлык, который мы назначали макросу при его записи.
Что записывает макрос?
Теперь зайдем в редактор кода и посмотрим, что у нас получилось.
Вот шаги, чтобы открыть редактор VB в Excel:
- Перейдите на вкладку «Разработчик».
- В группе «Код» нажмите кнопку «Visual Basic».
Вы также можете использовать комбинацию клавиш Alt + F11 и перейти в редактор кода VBA.
Рассмотрим сам редактор кода. Далее мы кратко опишем интерфейс редактора.
- Меню панели: содержит команды, которые можно использовать при работе с редактором VB.
- Панель инструментов — аналогична панели быстрого доступа в Excel. Вы можете добавить к нему дополнительные инструменты, которыми часто пользуетесь.
- Окно проектов (Project Explorer) — здесь Excel перечисляет все книги и все объекты в каждой книге. Например, если у нас есть книга с 3 проверенными листами, она появится в Project Explorer. Здесь есть несколько дополнительных объектов, таких как модули, пользовательские формы и модули классов.
- Окно кода — в этом окне находится сам код VBA. Для каждого объекта, указанного в менеджере проектов, есть окно кода, например, рабочие листы, книги, модули и так далее.
- Окно свойств — в этом окне вы можете увидеть свойства каждого объекта. Я часто использую это окно для обозначения объектов или изменения их свойств.
- Immediate Window (окно предпросмотра) — На начальном этапе оно вам не проградится. Это полезно, когда вы хотите проверить шаги или во время отладки. По умолчанию он не отображается, и вы можете отобразить его, щелкнув вкладку «Вид» и выбрав параметр «Немедленное окно».
Когда мы записали макрос «InvodText», в редакторе VB произошло следующее:
- Добавлен новый модуль.
- Макрос был записан с указанным нами именем — «ВводТекста»
- В окно кода добавлена новая процедура.
Поэтому, если дважды щелкнуть по модулю (в нашем случае по модулю 1), появится окно кода, как показано ниже.
Вот код, записанный макрорекордером:
Sub ВводТекста() ‘ ‘ ВводТекста Макрос ‘ ‘ Range(«A2»).Выберите ActiveCell.FormulaR1C1 = «Excel» Range(«A3»).Выберите End Sub
В VBA любая строка, следующая за ‘ (знак апострофа), не выполняется. Этот комментарий носит информационный характер. Если вы удалите первые пять строк этого кода, макрос все равно будет работать.
Теперь давайте пробежимся по каждой строчке кода и объясним, что и почему.
Код начинается с Sub, за которым следует имя макроса и пустые круглые скобки. Sub — сокращение для подпрограммы. Каждая подпрограмма (также называемая процедурой) в VBA начинается с Sub и заканчивается End Sub.
- Range(«A2»).Select — эта строка чехоть ехалку A2.
- ActiveCell.FormulaR1C1 = «Excel» — эта строка вводит текст «Excel» в активную ячейку. Поскольку мы выбрали ячейку A2 в качестве первого шага, она становится нашей активной ячейкой.
- Range(«A3»).Select — выбор чехали A3. Это происходит, когда мы нажимаем клавишу Enter после ввода текста, результатом чего является выделение ячейки A3.
Я надеюсь, что у вас есть базовые знания о том, как писать макросы в Excel.
Обращаем внимание на то, что код, написанный через макрорекордеры, как правило, не является эффективным и оптимизированным кодом. Рекордер макросов часто добавляет дополнительные ненужные действия. Но это не значит, что вам не нужно использовать макрорекордер. Для тех, кто только изучает VBA, средства записи макросов могут стать отличным способом анализа и понимания того, как все работает в VBA.
Абсолютная и относительная запись макроса
Вы уже знаете об абсолютных и относительных ссылках в Excel? Если вы используете абсолютную ссылку для написания макроса, код VBA всегда будет ссылаться на используемые вами ячейки. Например, если вы выделите ячейку А2 и введете текст «Excel», то каждый раз — независимо от того, где вы находитесь в списке и независимо от того, какая ячейка выделена, — ваш код будет вводить текст «Excel» в ячейку A2.
Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязан к конкретному адресу ячейки. В этом случае программа будет «двигаться» относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1 и начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажимаете клавишу Enter.
Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет двигаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится в B4, напишет текст «Excel», а затем переместится в ячейку K5.
Теперь давайте напишем макросы в режиме относительной ссылки:
- Выберите ячейку A1.
- Перейдите на вкладку «Разработчик».
- В группе «Код» нажмите кнопку «Релевантные ссылки». Он загорится, показывая, что он включен.
- Нажмите кнопку «Запись макросов».
- В диалоговом окне «Запись макроса» введите имя вашего макроса. Например, название «Относящие Ссылки».
- В опции «Сохранить в» выберите «Эта книга».
- Нажмите «ОК».
- Выберите ячейку A2.
- Введите текст «Excel» (или другие, на ваше усмотрение).
- Нажмите клавишу ввода. Курсор переместится в ячейку A3.
- Нажмите кнопку «Остановить запись» на вкладке «Разработчик».
Макросы в режиме относительных ссылок будут сохранены.
Теперь сделайте следующее.
- Выберите любой вариант (Кроме A1).
- Перейдите на вкладку «Разработчик».
- В группе «Код» нажмите кнопку «Макросы».
- В диалоговом окне «Макросы» нажмите на сохраненный макрос «Относительные ссылки».
- Нажмите кнопку «Выполнить».
Как вы макро заметите,с записал текст «Excel» не в ечали A2. Это произошло из-за того, что вы записали макросы в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, будет введен текст Excel — ячейка B4 и, в конечном итоге, выбрана ячейка B5.
Вот код, который записал макрорекордер:
Читайте также: Сайт Сбера не работает?
Что нельзя сделать с помощью макрорекодера?
Макро-рекордер отлично работает для вас в Excel и записывает ваши точные шаги, но он может не подойти вам, когда вам нужно сделать что-то большее.
- Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос переместился на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущего рабочего листа, средство записи макросов не сможет этого сделать. В таких случаях нужно вручную редактировать код.
- Вы не можете создать пользовательскую функцию с помощью средства записи макросов. С помощью VBA вы можете создавать собственные функции, которые можно использовать в рабочем списке как обычные функции.
- Вы не можете создавать циклы с помощью макрорекордера. Но вы можете записать одно действие, а цикл добавить вручную в редакторе кода.
- Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else, чтобы проанализировать условие и запустить код, если он истинен (или другой код, если он ложен).
Расширение файлов Excel, которые содержат макросы
Когда вы пишете макросы или вручную пишете код VBA в Excel, вам необходимо сохранить файл с расширением макроса (.xlsm).
До Excel 2007 было достаточно одного формата файла — .xls. Но с 2007 года расширение .xlsx было введено в качестве стандартного расширения файла. Файлы, сохраненные как .xlsx, не могут содержать макросы. Поэтому, если у вас есть файл с расширением .xlsx, и вы пишете/пишете макросы и сохраняете его, он предупредит вас о сохранении в формате, поддерживающем макросы, и покажет вам следующее диалоговое окно:
Если вы выберете «Нет», Excel сохранит файл в формате с поддержкой макросов. Но если вы нажмете «Да», Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макросы, вам нужно сохранить ее в формате .xlsm, чтобы сохранить этот макрос.
Где вы могли видеть макросы
Если вы когда-нибудь фотографировались на документы, то наверняка видели такую картину: вас сфотографировали, ваша голова выровнена по какому-то шаблону, вы удалили прыщики, а потом нажали какую-то кнопку — и через секунду вы есть список из шести фотографий с логотипом фотошопа, и всё выводится на печать. Это поработл макросы.
Вот пример того, как программируются и используются такие макросы:
Какие бывают макросы
Макросы обычно бывают двух типов:
- Запись никахи на действие в программе — есть толко то, что вы могли бы делать сами с помощью клавиатуры или мышки.
- Полноценная мини-программа на каком-то языке — внесистемная программа или на каком-то общеизвестном языке.
Часто обе программы поддерживают и то, и другое — например, в Photoshop вы можете писать макросы на панели «Действия», и это будут только действия, доступные из меню Photoshop. А также возможно написать специальный скрипт для фотошопа, который будет иметь гораздо более широкие возможности.
Для чего они нужны
Задача любого макроса — автоматизировать все так, чтобы несколько действий выполнялись как одно.
Правда, мы часто работаем с таблицами в Excel и нам часто приходится делать определенную верстку: выделить первую строку жирным шрифтом, добавить строку отступа, выделить фон разного цвета и т д. Это можно сделать за минуту. Но минута — это ж минута! Представьте, что за день через нас проходит 120 таких столов. Чтобы не делать каждый раз по триста движений, можно один раз написать макрос, который будет делать все то же самое, но за секунду и нажатием одной кнопки.
Еще примеры:
- Нанесите на готовый документ водяные знаки и глифы, зашейте в архив, отправьте по почте, отправьте на согласование.
- Делайте много разных версий одного и того же файла (например, разные размеры фотографий для разных мест на сайте).
- Отправьте один и тот же документ разным людям в разные отделы в разных форматах.
- Автоматическое заполнение договоров и других документов; генерировать договоры по заданному заказу; выставление чета и генерация кты на базе одной карты клиента.
- Пакетная обработка фотографий: применяйте эффекты, меняйте цвет.
- Находить в документах подписно опасный контент, както его отметить.
- Находить в тексте ошибки, неправильно расставленные кавычки или дефисы, убирать двойные пробелы.
И многое другое — что сопосенна ваша программа.
Программирование макросов
Чаще всего макросы делают так: нажимают кнопку «Записать макрос» и начинают выполнять действия в программе. Затем нажимают «стоп», и все записанные действия запоминаются как макросы. При запуске этого макроса он мгновенно повторит те же действия, но с новыми данными.
Но есть второй спосов — писать код с нуля. Например, для всех программ Microsoft Office макросы написаны на языке VBA — Visual Basic for Application. Это специальная версия языка Visual Basic для приложений, в которых можно писать сложную логику.
Макросы в оборудовании
Поддержка макросов есть даже на клавиатурах и мышах — у них есть программируемые кнопки, на которые можно привязать определенные действия. И даже можно собрать себе клавиатуру, где каждая кнопка будет отвечать за какое-то действие: открыть файл, запустить программу, отрегулировать уровень яркости в комнате и так далее.
Многие игроки специально покупают программируемые мыши с поддержкой макросов, чтобы получить преимущество в онлайн-играх. Например, с помощью макросов можно устранить отдачу при стрельбе, совершить быструю покупку, произнести необходимое заклинание или точно прицелиться.
В кастомные клавиатуры можно вешать целые конструкции из кода, комбинаций горячих клавиш и любых сложных последовательностей нажатий на клавиши. Например, вы можете запрограммировать макрос «Представьте себе насильственную деятельность», который будет перемещать курсор по экрану и делать вид, что вы о чем-то думаете. Вы нажимаете клавишу, откидываетесь на спинку стула, и, если работодатель захочет следить за вами через удаленный доступ, он будет уверен, что вы хорошо подумали над кодом.
Макросы на уровне операционной системы
В MacOS встроено приложение Automator, которое помогает писать и выполнять макросы на операционном уровне: работать с файлами, немного управлять стандартными системными программами и даже залезать в некоторые сторонние приложения, если они поддерживают нужный API.
Вот что вы можете сделать (например):
- Вставьте несколько PDF-файлов в один большой документ.
- Одной кнопкой создайте текстовый документ из содержимого буфера обмена и сохраните его в нужном месте.
- Массовое переименование файлов.
- откройте определенный набор сайтов одной кнопкой.
- Озвучьте выделенный текст и сохраните аудиофайл, где это необходимо.
- Скачайте картинку откуда-нибудь и потом что-нибудь с ней сделайте.
И есть вяские надстройки на Automator, которые работают с изображениями, документами и отдельными программами. Когда людям это нужно, они пишут такие скрипты и делятся ими с сообществом.
Подборка готовых скриптов для Автоматора на Гитхабе.
Automator — мощный редактор скриптов для MacOS. С ним можно запрограммировать почти все, что касается работы компьютера
Сторонние приложения
Если по каким-то причинам вы не хотите использовать фирменные утилиты Microsoft и производителей периферии, в сети можно найти массу программ для создания и управления макросами.
BotMek
BotMek предназначен в первую очередь для геймеров, позволяя создавать макросы для отдельных игр. Причем сделать это можно как с помощью простого визуального редактора, так и с помощью скриптов — в ПО встроен соответствующий редактор с подсветкой синтаксиса. Конечно, последний способ подходит только для продвинутых пользователей, но возможностей у него гораздо больше.
Если вы не хотите сами писать и компилировать макросы, у BotMek есть огромная база скриптов для самых разных игр. Кстати, такие пресеты также можно использовать в качестве основы для собственных уникальных макросов — их легко редактировать под свои задачи.
Hotkeycontrol
Еще одна отличная утилита для создания макросов подкупает своими широкими возможностями и поддержкой плагинов, которые пользователи могут создавать сами, а на официальном сайте разработчика есть список уже выпущенных плагинов. Его можно установить бесплатно, добавив в программу нужные вам функции.
Помимо сложных макросов, Hotkeycontrol умеет создавать горячие клавиши и комбинации клавиш, нажав на которые можно быстро запустить нужную программу, выполнить команду или изменить системные настройки. К примеру, увеличьте или уменьшите яркость, что особенно полезно в темных игровых сценах.
Key Manager
Key Manager выделяется среди множества других программ полностью русскоязычным интерфейсом. И ни о какой локализации речь не идет — софт создан отечественным разработчиком и отличается предельно простым и дружественным интерфейсом.
Сюда же можно записывать макросы, назначать и переназначать горячие клавиши и кнопки мыши, а сам Key Manager по сути является более функциональным вариантом популярной программы Key Remapper. Помимо традиционных игровых возможностей, его также можно использовать для быстрого заполнения формы на сайте, запуска программы, открытия сайта, управления громкостью, установки определенного размера окна и многого-многого другого.
Free Macro Recorder
Еще одна очень популярная программа Free Macro Recorder ценится пользователями, в первую очередь, за простоту. Для работы с ней не нужно никаких особых навыков. Достаточно нажать на кнопку записи и нажать нужную комбинацию клавиш. Программа запомнит его, и вы сможете отредактировать его при необходимости. Например, изменить время нажатия кнопок или включить циклы повторения.
И, несмотря на свою простоту, Free Macro Recorder нельзя назвать примитивным программным обеспечением с ограниченными возможностями. Опытные пользователи найдут здесь, в том числе, редактор сценариев для написания собственных сложных макросов. А для этого уже потребуются определенные навыки.
AutoHotkey
Полное оправление Free Macro Recorder — утилита AutoHotkey. Разобраться в ней игровое устройство будет ой как процессор. Именно поэтому возможности для написания скриптов в ней просто огромны. Пользователи программы могут создавать самые разные макросы для последовательного запуска нескольких программ, редактирования файлов, изменения положения или увеличения области и многих других действий, отнимающих у вас время в повседневной жизни.
В общем, профессионалы точно оценят. Важно, что это программа с открытым исходным кодом. А потому она не только бесплатна, но и открыта для самостоятельного редактирования и написания плагинов.
Что делать, если программа не поддерживает макросы
Если в программе нет встроенной поддержки макросов, вы можете скачать специальное ПО — оно запишет ваши действия и сможет повторить их в любой момент. Как-нибудь доберёмся и до этого — мы выпустим отдельную подборку программ для создания ваших макросов на системном уровне.