Как прописывать макросы. Руководство и примеры работы с макросами в Excel. Как запустить макрос по условию можно прочитать

Многие из Вас наверняка слышали термин «Макрос». Иногда при запуске некоторых документов Word, а чаще Excel, Вам выскакивало предупреждение: «Данный документ содержит макросы, которые могут нанести вред Вашему компьютеру. С целью безопасности макросы были отключены» и т.д. И многих это предупреждение пугает, хотя большая доля правды в этом предупреждении все ж присутствует. Но, это относится к документам, попавшим к Вам из неизвестных источников, а именно из сети, по почте и т.д. Чем же так опасен макрос и для чего они тогда нужны, если их использование небезопасно? Рассмотрим далее, а пока дадим определение макросу.

Что такое «Макрос»?

Макрос это программа, которая содержит набор инструкций выполняющих какие либо действия, как автоматически, так и по требованию пользователя, т.е. выполняются явно и неявно. Макрос от сокращенного «макрокоманда ». Широкое распространение данное понятие получило благодаря корпорации Microsoft, которая реализовала возможность написания макросов в своих продуктах, а именно всеми любимый и известный Office(Word, Excel, Access и т.д.). Используемый язык в макросах - Visual Basic, так же продукт Microsoft, но с некоторыми ограничениями.

Как работают макросы?

Благодаря внедрению в MS Office языка Visual Basic, Microsoft удалось значительно расширить функционал своих продуктов. Макрокоманды, записанные пользователями или написанные программистами, способны автоматизировать большинство процессов и значительно сократить время на обработку данных. Тем самым, оптимизировать рабочее время сотрудников. Для выполнения макрокоманд необходима своя программная среда, в которой эти команды способны работать. Такой средой являются, например Excel, Word, Access. При написании сложных макросов, их запуск и выполнение, как правило, ограничивается рабочей станцией (ПК) на которой он был написан. Сложные, имеется ввиду, подключение дополнительных компонентов и объектов, которые попросту могут отсутствовать на другом ПК. Происходит это потому, что программный код не переводится в исполняемый машинный код и вдобавок к которому прикладываются необходимые модули и библиотеки, а выполняется через интерпретатор . Но, есть и преимущества в таком подходе, а именно, возможность произвести отладку сразу, «на месте», при возникновении каких либо ошибок, просмотреть код и дополнить его новыми инструкциями, расширив функционал макроса. Как правило, макросы написанные для Excel, не работают в Word или Access, только если не используется базовый набор процедур и функций, которые не затрагивают объекты приложения.

Как макросы помогают в работе?

При работе с большими объемами данных, которые необходимо тем, или иным образом обрабатывать, а так же при выполнении однообразных действий по обработке информации в таблицах (например, формирование сводных таблиц определенного формата), макросы незаменимы. Пример: Вам ежедневно необходимо получать данные из БД, производить с этими данными некоторые расчеты, затем из результатов свести сводную таблицу. На все у Вас уходит, допустим, 2 часа. Разработав и внедрив такой макрос, который будет все эти действия производить самостоятельно, у Вас время сократиться до пары минут, а точнее секунд т.к. остальное уйдет на открытие и получение данных. А если еще к расчетам «вручную» добавить допущенные механические ошибки, которые обязательно бываю, и которые в лучшем случае Вы обнаружите и будете искать, то это еще добавит время к тем двум часам. Макрос же при грамотной разработке и хорошо протестированный, позволяет избежать таких ошибок.

Это один из многих вариантов применения. Другой пример, на личном опыте. При работе с ежедневными накопительными данными, мне приходилось заполнять поле «Контрагент» (КА) соответствующим именем, имеющимся в базе. Название КА должно обязательно быть идентичным. Создание списка очень неудобно т.к. список состоит не из одной сотни КА. Я написал макрос, который запускается на исполнение, при нажатии в соответствующей колонке, правой кнопкой мыши. Открывается форма, со списком КА в которой также имеется «горячий поиск» в списке т.е. достаточно начать вводить сочетание символов содержащихся в названии и список тут же отфильтрует и оставит подходящих, далее остается выбрать из двух трех КА нужного. На все про все, не больше 5 сек. Вот как вариант. И примеров можно приводить кучу, в зависимости от специфики работы.

В чем заключается опасность макросов?

Как я уже говорил выше, макросы могут быть как полезны, так и опасны. Все зависит от того с какой целью и кем он был написан. В чем заключается опасность? Так как в написании макросов используется язык Visual Basic, то располагая всем его функционалом, злоумышленник способен написать на этом языке вирус – «макровирус». Макровирус способен повредить все данные, способен работать как программа шпион и т.д. Время жизни такого вируса - пока запущено приложение(Excel, Word и т.д.). После внедрения такого вируса, в дальнейшем, его запуск будет осуществляться в скрытом от пользователя режиме. Макросы так же способны выступать в роли посредника для внедрения более серьезных угроз всей системе. Например, активировав макрос, произойдет копирование или генерирование троянской программы, которая работает под управлением операционной системы, с последующим ее запуском. А это уже угроза работе всей системе.

Варианты защиты от таких макросов:

  • Повысить уровень безопасности Excel (способ не удобен т.к. и полезные макросы не будут работать);
  • Не открывать файлы из неизвестных источников и не игнорировать предупреждения безопасности при открытии таких файлов;
  • Если установлена операционная система Windows 7, не допускать запуск приложений с подписью «неизвестный источник».

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

P. S. Используя смекалку и фантазию на VBA можно написать простейшие и интересные игры. Если Вас заинтересовал такой вариант применения, то можете ознакомиться с играми, написанными для Excel ().

Когда все готово, приступаем к записи.


Запуск макроса

Для проверки того, как работает записанный макрос, выполним несколько простых действий.


Редактирование макроса

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

  1. Снова щелкаем на кнопку «Макросы» . В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить» .
  2. Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.
  3. Запись каждого макроса начинается с команды Sub , а заканчивается командой End Sub . Сразу же после Sub указывается имя макроса. Оператор Range("…").Select указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4» . Оператор ActiveCell.FormulaR1C1 используется для записи действий в формулах и других расчетов.
  4. Попытаемся немного изменить макрос, дописав выражение:

    Range("C3").Select
    ActiveCell.FormulaR1C1 = "11"

  5. Выражение ActiveCell.FormulaR1C1 = "=R[-3]C+R[-2]C+R[-1]C" заменим на ActiveCell.FormulaR1C1 = "= R[-4]C+R[-3]C+R[-2]C+R[-1]C" .
  6. Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
  7. В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду Application.ScreenUpdating = False . Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду Application.ScreenUpdating = True .
  8. Добавим также команду Application.Calculation = xlCalculationManual в начало кода, а в его конец дописываем Application.Calculation = xlCalculationAutomatic . Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.
  9. Вариант 2: Написание кода макроса с нуля

    Продвинутые пользователи могут выполнять не только редактирование и оптимизацию записанных макросов, но и записывать их код с нуля.


    Как видим, макросы в Microsoft Excel могут значительно упростить выполнение рутинных и однообразных процессов. Тем не менее в большинстве случаев для этого больше подходят макросы, код которых написан вручную, а не автоматически записанные действия. Кроме того, его код можно оптимизировать через редактор VBE для ускорения процесса выполнения задачи.

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел рассказать о том, как записать макрос . В своих примерах я буду пользоваться Microsoft Excel 2007 , вы же можете пользоваться любой (желательно, что версия была не ниже моей). Зайдите в Excel, выберите Вид — Макросы — Запись макроса :

В версиях 2010 и 2013 панель может отличаться, но незначительно. Далее должно открыться вот такое диалоговое окно, которое называется "Запись макроса" :

Имя макроса задавайте в том случае, если это будет конечное решение, и вы в дальнейшем им собираетесь пользоваться. Если же вы собираетесь записать макрос для того, чтобы подсмотреть что-то (что вы забыли), тогда можно имя оставить как есть.

В имени макроса использовать запрещено: пробелы, знаки препинания, цифры в начале имени. Можно использовать: английские и русские буквы, цифры (не в начале), знак подчеркивания. Также запрещено называть макрос, имя которого будет совпадать с любым существующим объектом в Excel.
Для макроса можно задать сочетание клавиш, при нажатии на которую, он будет запускаться. На все макросы не нужно вешать горячие клавиши, нужно вешать только на те, которые мы часто будем использовать. Вообще способов запустить макрос много, как вариант, можно разместить на ленте (начиная с 2010 версии), в 2007 версии лента есть, но её нельзя редактировать, можно разместить на листе. Также макрос можно запускать по какому-нибудь событию. У горячих клавиш есть чувствительность, как к регистру, так и к раскладке , поэтому внимательно относитесь к тому, какую горячую клавишу назначить макросу. Можете ставить большие буквы, для этого придётся нажимать Ctrl + Shift + Ваша буква .

Если макрос сохранить в эту книгу, то он физически будет находиться в данном файле. Поэтому, когда файл закрыт, данный макрос будет недоступен. В каких случаях это оправдано делать: макрос требуется только для расчетов в этой книге и больше ни в каких других. Если данный макрос нужно будет использовать в других файлах (книгах) Excel, то данный файл придётся всегда держать открытым или постоянно открывать и закрывать, что совсем неудобно. Здесь нужно выбирать другой способ сохранения: личная книга макросов .

Это почти обычный файл, и называется он Personal.xlsb . Этот файл находится в папке XLStart , и открывается он в скрытом режиме. Пока мы в этот файл ничего не записали — его не существует. Как только что-то запишем — он появится. Всё что находится в папке XLStart запускается автоматически. Плюс здесь в том, что макрос, который вы записали в личную книгу будет всегда доступен (его не нужно будет постоянно открывать — закрывать). Обращаю ваше внимание на то, что он будет доступен только на данном компьютере.
Также можно к макросу добавить описание.

Давайте запишем следующий макрос, который будет создавать новый лист и в ячейку C4 будет записывать фразу Привет VBA . Причем надпись должна быть красным цветом и стиль оформления: полужирный. Нажимаем ОК .
Вставляем лист таким образом:

Теперь в ячейку С4 записываем фразу Привет VBA . Затем нажимаем Ctrl + Enter , чтобы остаться в этой же ячейке и применить к ней форматирование. Если мы нажмём просто Enter , то фокус перейдёт на другую ячейку (нам этого не нужно). Затем правой кнопкой щелкаем по ячейке и выбираем Формат ячеек и переходим на вкладку Шрифт , выбираем красный и цвет и делаем шрифт жирным:

Нажимаем OK . Теперь можно наш макрос завершать. Сделать это можно несколькими способами: Вид — Макросы — Остановить запись , также можно отключить в левом нижнем углу (в 2007 версии) в панели состояния (на 3 картинке видно). Был создан "Лист4". Давайте удалим его и с помощью макроса создадим новый лист. Для этого воспользуемся горячей клавишей, которую мы задали для макроса Ctrl + Shift + Ц . Убедитесь, что вы находитесь на русской раскладке. Если вы сделали всё правильно, то у вас должен был создаться новый лист с нужной нам записью.

Что такое макрос? Макрос — это сохраненная последовательность действий или программа, созданная на языке VBA (Visual Basic for Application). Частый вопрос как написать макрос в Excel? Просто.

Т.е. если нам необходимо выполнять одни и те же действия несколько раз, мы можем запомнить эти действия и запускать их одной кнопкой. Я не буду заставлять вас учить язык VBA и даже не буду предлагать много стандартных макросов в этой статье. В действительности создать/написать макрос в Excel сможет действительно каждый. Для этого существует самая интересная и необычная возможность Excel — Макрорекордер (запись ваших действий в виде кода). Т.е. вы можете записать свои действия, как на видео и перевести их в код (последовательность).

Короче, если вы каждый день выполняете одни и те же действия, стоит разобраться как автоматизировать этот процесс. Читайте далее, как написать макрос в Excel?

1.Разрешить использование макросов

Меню (круглая кнопка вверху слева) — Параметры Excel — Центр управления безопасностью — Параметры центра управления безопасностью — Параметры макросов. Поставьте флажок «Включить все макросы».

Или сделать тоже самое на вкладке Разработчик

2. Включить меню Разработчик для быстрой работы с макросами

Меню (круглая кнопка вверху слева) — Параметры Excel — Основные — Показывать вкладку Разработчик.

Чтобы созданный макрос сохранился в книге, необходимо сохранить файл в .xlsm или.xlsb. Нажмите Сохранить как — Книга Excel с поддержкой макросов или Двоичная книга.

Итак, как написать макрос в Excel?

Все просто. Заходим в Excel. Внизу страницы, под ярлычками листов есть кнопка «Запись макроса».

Нажимаем кнопку, открывается окно «Запись макроса». Называем макрос как нам нравится в поле Имя макроса:. Задаем сочетание клавиш, которыми потом будем вызывать его (не обязательно).

Жмем ОК. Начались запись Макрорекордера.

Все. Теперь делаем те действия, которые нам нужно запомнить макросом. К примеру, нам нужно удалить одну строку и раскрасить ячейку А1 желтым цветом.

Во время этих манипуляций вместо кнопки «Запись макроса» под листами, будет гореть квадратик, нажав на который вы остановите выполнение макроса.

Как запустить то, что получилось? Нажмите кнопку , появится окно Выбор макроса, выбирите нужный макрос, а затем щелкните кнопку выполнить.

Как посмотреть что получилось? Нажмите кнопку . Выберите нужный макрос и нажмите изменить. Откроется окно записи макросов (окно VBA)

Код макроса должен получиться примерно следующим.

Sub Пример1() " Пример1 Макрос Rows("2:2").Select Selection.Delete Shift:=xlUp Range("A1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub

‘ — символ комментария, т.е. эта строка не участвует в коде. Для макроса обязательно наличие имени (Sub Пример1()) и окончания (End Sub).

Как создать кнопку для макроса можно прочитать .

Итак, любое свое действие Вы можете записать, чтобы потом повторить сколько угодно раз!

Как сохранить макрос для всех книг на своем компьютере можно прочитать .

Для этого применяется файл Personal.

Как запустить макрос по условию можно прочитать

Удачи, уверен вам это здорово пригодиться!

Поделитесь нашей статьей в ваших соцсетях:

Многие люди думают, что макросы в Excel – это очень трудно, но это не так. В этой статье Вы найдёте несколько интересных и простых примеров, как можно автоматизировать Ваши повседневные задачи в Excel. Макрос – это программа на Visual Basic, созданная для того, чтобы автоматизировать задачи в Microsoft Office. В своих примерах я использую Excel 2010, но с таким же успехом Вы можете использовать Excel 2007.

Создаем макрос при помощи команды «Запись макроса»

Доступ к записанному макросу можно получить с помощью команды View Macros (Макросы), которая находится на вкладке View (Вид) в выпадающем меню Macros (Макросы). Откроется диалоговое окно Macro (Макрос), в котором Вы сможете выбрать нужный. Дважды кликните по имени макроса, чтобы выполнить программу.

Кроме этого, Вы можете связать макрос с кнопкой. Для этого:

  1. На вкладке File (Файл) нажмите Options (Параметры) > Quick Access Toolbar (Панель быстрого доступа).
  2. В поле Choose commands from (Выбрать команды из) выберите All Commands (Все команды).
  3. Найдите команду Option Button (Кнопка), нам нужна та, что относится к разделу Form Control (Элементы управления формы). Выделите ее и нажмите Add (Добавить). Затем нажмите ОК , чтобы закрыть параметры Excel.
  4. Выберите команду, только что добавленную на Панель быстрого доступа, и начертите контур кнопки на рабочем листе Excel.
  5. Назначьте макрос объекту.

Примечание: Если у вас включена вкладка Developer (Разработчик), то получить доступ к элементам управления формы можно с нее. Для этого перейдите на вкладку Developer (Разработчик), нажмите на иконку Insert (Вставить) и из раскрывающегося меню выберите нужный элемент.

Не знаете, как отобразить вкладку Developer (Разработчик)? Excel 2007: жмем на кнопку Office > Excel Options (Параметры Excel) > Popular (Основные) и ставим галочку напротив опции Show Developer tab in the Ribbon (Показывать вкладку “Разработчик” на ленте). Excel 2010: жмем по вкладке File (Файл) > Options (Параметры) > Customize Ribbon (Настройка ленты) и в правом списке включаем вкладку Developer (Разработчик).

Цикл FOR

В следующем примере Вы увидите, как использовать цикл FOR . Цикл FOR позволяет нам выполнить повторение цикла с разными значениями. Давайте посмотрим, как можно заполнить числами от 1 до 5 ячейки A1:A5 .

Для этого на вкладке Developer (Разработчик) нажмите Visual Basic . Дважды кликните по объекту из списка Microsoft Excel Objects , в котором должен быть сохранён макрос. Введите вот такой код:

Sub Macro1 () For n = 1 To 5 Cells(n, 1) = n Next n End Sub

Сохраните файл. Чтобы выполнить макрос, перейдите View > Macros > View Macros (Вид > Макросы > Макросы), выберите из списка название нужного макроса и нажмите Run (Выполнить).

Следующий код отображает фразу “Hello World ” в окне сообщений Windows.

Sub MacroName() MsgBox ("Hello World!") End Sub

В следующем примере мы создаём сообщение с выбором Yes (Да) или No (Нет). Если выбрать вариант Yes (Да), то значение ячейки будет удалено.

Sub MacroName() Dim Answer As String Answer = MsgBox("Are you sure you want to delete the cell values ?", vbQuestion + vbYesNo, "Delete cell") If Answer = vbYes Then ActiveCell.ClearContents End If End Sub

Давайте проверим этот код. Выделите ячейку и запустите макрос. Вам будет показано вот такое сообщение:

Если Вы нажмёте Yes (Да), значение в выделенной ячейке будет удалено. А если No (Нет) – значение сохранится.

Конструкция IF

В Microsoft Excel Вы также можете использовать конструкцию IF . В этом коде мы будем раскрашивать ячейки в зависимости от их значения. Если значение в ячейке больше 20 , то шрифт станет красным, иначе – синим.

Sub MacroName() Dim CellValue As Integer CellValue = ActiveCell.Value If CellValue > 20 Then With Selection.Font .Color = -16776961 End With Else With Selection.Font .ThemeColor = xlThemeColorLight2 .TintAndShade = 0 End With End If End Sub

Для проверки этого кода выберем ячейку со значением больше 20 :

Когда Вы запустите макрос, цвет шрифта изменится на красный:

При выполнении второго условия шрифт станет синим:

Конструкция CASE

Вы также можете использовать конструкцию Case , чтобы связать выполнение действия с появлением определённого значения в ячейке. В следующем примере отображается сообщение, содержание которого зависит от указанного возраста человека.

Sub MacroName() Dim CellValue As Integer CellValue = ActiveCell.Value Select Case CellValue Case 60 To 200 MsgBox "The person is old" Case 30 To 59 MsgBox "The person is adult" Case 18 To 29 MsgBox "The person is young" Case 0 To 17 MsgBox "The person is a child" Case Else MsgBox "Unknown age" End Select End Sub

Чтобы протестировать этот пример, Вы должны выбрать ячейку со значением и запустить макрос. Если значение выбранной ячейки, к примеру, равно 44 , то будет показано вот такое сообщение.