Самоучитель по работе с макросами в Excel
Возможности Excel не ограничиваются набором встроенных функций. При помощи написания макросов Вы можете создавать собственные функции для выполнения нестандартных задач в Excel.
Например, самостоятельно написанный макрос можно привязать к иконке и вывести на Ленту меню. Либо Вы можете создать пользовательскую функцию (UDF) и использовать ее точно так же, как и остальные встроенные функции Excel.
Макрос — это компьютерный код, написанный для Excel на языке программирования Visual Basic for Applications (VBA). Базовые понятия языка программирования VBA рассматриваются на нашем сайте в Учебнике по VBA. Однако прежде чем приступить к написанию кода VBA, рекомендуем познакомиться с уроками, в которых рассматривается безопасность макросов Excel и редактор Visual Basic.
Автоматизация рутины в Microsoft Excel при помощи VBA
В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.
VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.
Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.
Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.
Поэтому, увы, будем учить Visual Basic.
Переменные
Переменная предназначена для хранения определенного значения, которое может быть изменено, либо получено путем её вызова.
Синтаксис:
Пример переменной:
Переменная состоит из наименования , которое может называться как вам нравится, например, , , , и т.п. А также указывается тип данных, в приведенном примере , т.е. переменная может хранить любое число от -32768 до 32767. Тип данных необходимо объявлять для уменьшения нагрузки на компьютер (чтобы код занимал меньше оперативной памяти) и соответственно более быстрого выполнения макроса. Типы данных, возможность хранения и занимаемая ими оперативная память приведена в таблице:
Типы данных с значениями
Для присвоения значения переменной достаточно указать ее значение после оператора равно:
Т.е. переменной присвоено значение . Чтобы его получить – достаточно указать имя переменной:
При выполнении данного кода получим значение «18», присвоенное переменной Age ранее:
Макросы, программирование в Excel и Visual Basic for Applications (VBA)
Гарбер Г.З. Основы программирования на Visual Basic и VBA в Excel
Кашаев С.М. Программирование в Microsoft Excel на примерах
Эйткен П. Интенсивный курс программирования в Excel за выходные
Роман С. Использование макросов в Excel
Уокенбах Дж. Профессиональное программирование на VBA в Excel
Берндт Г., Каинка Б. Измерение, управление и регулирование с помощью макросов VBA в Word и Excel
Гайдышев И.П. Решение научных и инженерных задач средствами Excel, VBA и C/C++
Слепцова Л.Д. Программирование на VBA в Microsoft Office 2010
Малышев C.A. Самоучитель VBA. Как это делается в Word, Excel, Access
Харрис М. Освой самостоятельно программирование для Microsoft Excel 2000 за 21 день
Зиборов В.В. Visual Basic 2010 на примерах
МакГрат М. Программирование на Visual Basic для начинающих
Биллиг В.А. Основы офисного программирования и документы Excel
Уокенбах Д. Excel 2010: профессиональное программирование на VBA
Гарнаев А.Ю., Рудикова Л.В. Microsoft Office Excel 2010: разработка приложений
Казанский А.А. Объектно-ориентированный анализ и программирование на Visual Basic 2013
Кашаев С.М. Офисные решения с использованием Microsoft Excel 2007 и VBA
Любин А.Н. Создание пользовательских форм в Visual Basic for Applications
Чтобы записать макрос, следует:
- Войти во вкладку «разработчик».
- Выбрать запись макроса.
- Выбрать имя макроса (в имени нельзя использовать пробелы и дефисы);
- Можно выбрать сочетание клавиш, при нажатии которых будет начинаться запись макроса;
- Выбрать место сохранения:
— при сохранении в «Эта книга» макрос будет работать только в текущем документе;
— при сохранении в «Личная книга» макрос будет работать во всех документах на Вашем компьютере.
- Можно добавить описание макроса, оно поможет Вам вспомнить, какие действия совершает макрос.
- Нажать «Ок».
- Если вы не указали сочетание клавиш, запись начнется сразу после нажатия кнопки «Ок».
- Когда идет запись, Вы должны совершать требуемую последовательность действий.
- Когда закончите, нажимайте кнопку остановить запись.
Записанные макросы отображаются в книге макросов.
Чтобы их посмотреть следует нажать кнопку «макросы». В появившемся окне появится список макросов. Выберете нужный макрос и нажмите «Выполнить».
Макросы, находящиеся в книге можно редактировать. Для этого нужно выбрать макрос и нажать кнопку «Изменить». При нажатии на кнопку «Изменить» откроется редактор макросов с записанным на языке VBA скриптом.
Преимущества макросов VBA в Excel
Если VBA сложнее, чем запись макроса, зачем вам его использовать? Короткий ответ: вы получаете гораздо больше возможностей от макросов VBA.
Вместо того, чтобы щелкать по электронной таблице и записывать эти клики, вы можете получить доступ ко всему спектру функций и возможностей Excel. Вам просто нужно знать, как их использовать.
И как только вы освоитесь с VBA, вы сможете делать все, что можете, в обычном макросе за гораздо меньшее время. Результаты также будут более предсказуемыми, поскольку вы точно указываете Excel, что делать. Там нет никакой двусмысленности вообще.
Создав макрос VBA, вы можете легко сохранить его и поделиться им, чтобы каждый мог воспользоваться им. Это особенно полезно, когда вы работаете со многими людьми, которым нужно делать то же самое в Excel.
Давайте посмотрим на простой макрос VBA, чтобы увидеть, как он работает.
VBA Excel. Начинаем программировать с нуля
Первое знакомство с редактором VBA Excel, создание процедур (подпрограмм) и написание простейшего кода, работающего с переменными и ячейками рабочего листа.
Начинаем программировать с нуля Часть 1. Первая программа
Знакомство с редактором VBA
В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.
- Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.
После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.
Первая программа на VBA Excel
Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).
- Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.
В результате откроется окно добавления шаблона процедуры (Sub).
- Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.
Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.
- Вставьте внутрь шаблона процедуры следующую строку: MsgBox «Привет» .
Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».
- Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.
Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!
Работа с переменными
Чтобы использовать в процедуре переменные, их необходимо объявить с помощью ключевого слова «Dim». Если при объявлении переменных не указать типы данных, они смогут принимать любые доступные в VBA Excel значения. Комментарии в тексте процедур начинаются со знака «’» (апостроф).
Пример 2 Присвоение переменным числовых значений:
Создание макросов в Excel
Допустим , нам нужно создать таблицу. Для этого необходимо совершить некую последовательность действий в Excel, которая отнимает лишнее время и может быть записана в виде макроса.
Открываем вкладку Сервис, где находим пункт Макросы — Начать запись. После этого перед нами открывается окно, в котором прописываем Имя нашего макроса и сочетание клавиш, которыми он будет вызываться.
Стоит отметить, что в Excel все действия назначаются « горячими « клавишами в сочетании Ctrl+n, где в роли n может выступать абсолютно любая кнопка на клавиатуре, применимая к той или иной команде. Поэтому стоит внимательнее назначать « горячие « клавиши во избежание повторов и путаницы. Итак, выбираем в нашем случае букву « ы « и нажимаем Ок. Теперь мы находимся в режиме записи макроса и перед нами открывается небольшая вкладка с кнопкой « Остановить запись « . Нажимать ее сейчас не следует.
После этого приступаем к созданию таблицы в той последовательности, в которой это обычно происходит. Процесс этот знаком всем пользователям Excel, поэтому подробнее на нем останавливаться не стоит. После того как шаблон таблицы создан нажимаем на кнопку « Остановить запись « , что означает окончание создания шаблона.
Теперь при нажатии на заданное сочетание клавиш Ctrl+ы мы будем получать готовый шаблон таблицы.
Внимание! В процессе записи макроса система запоминает абсолютно всю последовательность ваших действий включая прокрутку экрана, смену раскладки клавиатуры и т. д., поэтому следует максимально оптимизировать свои действия во избежание создания слишком длинного кода и как следствие — неприемлемо долгого времени активации макроса при последующем запросе
Как запустить макрос в Excel 2016, Excel 2013, Excel 2010, Excel для Office 365 и Excel 2016 для Mac
Диалоговое окно Макро
Хотя существует несколько способов запуска макроса, созданного в Excel, два наиболее простых метода — это использование ярлыка, назначенного макросу, и запуск макроса со вкладки «Разработчик». Оба они эффективны, поэтому используйте тот, который кажется вам самым легким.
Чтобы запустить макрос с помощью сочетания клавиш быстрого доступа, начните с открытия листа, содержащего макрос.
- Введите любые данные, на которые вы хотите применить форматирование или команды, включенные в макрос.
- Нажмите комбинацию клавиш, которую вы назначили макросу.
Чтобы запустить макрос со вкладки «Разработчик», начните с открытия листа, содержащего макрос.
- Введите любые данные, на которые вы хотите применить форматирование или команды, включенные в макрос.
- Перейти к разработчик вкладку ленты.
- Нажмите макрос в группе Code. Откроется диалоговое окно Макрос.
- Выберите имя, присвоенное макросу, и нажмите Бежать.
Создание графической кнопки на листе Excel
Данный способ доступен для любой из версий MS Excel и заключается он в том, что мы вынесем кнопку прямо на наш рабочий лист как графический объект. Для этого вам нужно:
- В MS Excel 2003 и более старше переходите в меню «Вид», выбираете «Панель инструментов» и нажимаете кнопку «Формы».
- В MS Excel 2007 и более новее вам нужно на вкладке «Разработчик» открыть выпадающее меню «Вставить» и выбрать объект «Кнопка».
После всего этого вы должны нарисовать кнопку на вашем листе при зажатой левой кнопке мыши. После окончания процесса рисования включится автоматически окошко, где вам нужно будет выбрать тот макрос, который обязан, выполнятся при нажатии на вашей кнопке.
Как создать макрос в Excel 2016 для Mac
Прежде чем пытаться добавить макросы в Excel, вам нужно отобразить вкладку «Разработчик» на ленте. По умолчанию вкладка «Разработчик» не отображается.
- Идти к превосходить и выберите предпочтения…
- Выбрать Лента и панель инструментов.
- Выберите разработчик установите флажок «Основные вкладки» в разделе «Настроить категорию ленты».
- Нажмите Сохранить.
Когда вы будете готовы создать макрос, запустите Excel и откройте рабочий лист, в котором вы хотите его использовать.
- Перейти к разработчик Вкладка.
- Нажмите на Запись макроса в группе Code.
- Введите имя макроса в поле «Имя макроса».
- Введите любую строчную или прописную букву, которую вы хотите использовать в поле быстрого доступа.
- Выбрать Эта рабочая тетрадь в раскрывающемся списке «Сохранить макрос в магазине».
- Нажмите Хорошо.
- Выполните все форматирование и команды, которые вы хотите включить.
- Нажмите Остановить запись когда вы закончите.
- Перейти к файл и выберите Сохранить как или нажмите ⇧⌘S (Shift-Command-S). Откроется диалоговое окно «Сохранить как».
- Введите имя файла для книги.
- Выбрать Excel Macro-Enabled Workbook в раскрывающемся списке «Сохранить как» и нажмите Сохранить.
Бизнес-приложения Excel, экономические расчёты, управление и финансы
Степанов А.Г. Разработка управленческого решения средствами пакета Excel
Карлберг Конрад. Бизнес-анализ с помощью Excel
Хелдман К., Хелдман У. Excel 2007. Руководство менеджера проекта
Коцюбинский А.О., Грошев С.В. Excel для бухгалтера в примерах
Левин Д.М. и др. Статистика для менеджеров с использованием Microsoft Excel
Салманов О.Н. Математическая экономика с применением Mathcad и Excel
Мур Дж. и др. Экономическое моделирование в Microsoft Excel
Сергеев А.П. Маркетинговые исследования с помощью Excel
Шимон Беннинга. Финансовое моделирование с использованием Excel
Дубина А.Г. и др. Excel для экономистов и менеджеров
Абдулазар Л. Лучшие методики применения Excel в бизнесе
Гарнаев А.Ю. Использование MS Excel и VBA в экономике и финансах
Подкопаев Д.П., Яшкин В.И. Обработка и анализ экономической информации в Microsoft Excel
Трусов А.Ф. Бухгалтерский, налоговый учет и делопроизводство на Excel для малого бизнеса
Плакунов М.К. Планирование на малых и средних предприятиях средствами Excel
Трусов А.Ф. Excel 2007 для менеджеров и экономистов
Пикуза В., Гаращенко А. Экономические и финансовые расчеты в Excel. Самоучитель
Гобарева Я.Л. и др. Бизнес-аналитика средствами Excel
Карлберг К. Бизнес-анализ с использованием Excel
Пикуза В.И. Экономические расчеты и бизнес-моделирование в Excel
Брюков В.П. Как предсказать курс доллара. Эффективные методы прогнозирования с использованием Excel и EViews
Минько А.А. Принятие решений с помощью Excel
Винстон У.Л. Microsoft Excel 2013. Анализ данных и бизнес-моделирование
Бланк КУДиР в Excel — книга учета доходов и расходов ИП
VBA
Так что же такое VBA и для чего он предназначается?
VBA (Visual Basic for Application) — язык макропрограммирования, основанный на языке Visual Basic.
В приложениях, входящих в комплект MS Office, таких как Excel, Word, PowerPoint и Access, VBA используется для автоматизации множества рутинных задач (напр.: повторяющихся однотипных действий), позволяет создавать формы для общения с пользователем и предлагает множество иного богатого функционала. При помощи VBA доступно управление электронной таблицей посредством объектно-ориентированной модели кода/данных, при помощи VBA-кода входные данные таблиц могут быть обработаны и представлены в итоговых (результирующих) таблицах и диаграммах (графиках). Таблица становится интерфейсом кода, позволяя легко работать, изменять его и управлять расчётами. На выходе VBA проект, используемый в структурах описанных выше приложений (электронные таблицы Excel, презентации PowerPoint, базы Access), компилируется в специальный бинарный исполняемый файл, который размещается внутри файла основного формата. Применительно к Excel это файл , который располагается внутри *.xslm-файла в директории , представляющий собой бинарный исполняемый файл проекта, содержащий макрос в откомпилированном (готовом к исполнению) виде.
Наиболее вероятной причиной сбоя является повреждение блока кода VBA, содержащегося в книге Excel. Об истоках этого остается только догадываться, возможно что в структуре .xlsm-файла, в процессе работы с документом, происходят какие-то изменения, способные приводить блок кода в неработоспособное состояние.
Собираем строительные блоки VBA в Excel
Когда вы впервые посмотрите на макрос VBA выше, он выглядит довольно сложным. Но после разбиения его на составные части логика становится ясной. Как и любой язык сценариев, требуется время, чтобы привыкнуть к синтаксису VBA.
Но с практикой вы создадите свой словарный запас VBA и сможете писать макросы быстрее, точнее и с гораздо большей мощностью, чем вы могли бы когда-либо записывать.
Когда вы застряли, запуск поиска Google — это быстрый способ получить ответы на ваши вопросы VBA. А справочник Microsoft по VBA для Excel может быть полезен, если вы хотите найти технический ответ.
Когда вы освоитесь с основами, вы можете начать использовать VBA для таких вещей, как отправка электронных писем из Excel, экспорт задач Outlook.
и отображение информации о вашем ПК
,
Как включить макросы в Excel
Существует три версии Экселя, где активация макросов отличается друг от друга. Сначала рассмотрим, как включить макросы в Excel 2010.
Как включить макросы в MS Excel 2010
В 2010 версии Экселя разработчики сделали упор на безопасность, поэтому для включения макросов нужно сделать следующее:
- В верхнем меню приложения нажмите «Файл».
- Откроется список, выбрать предпоследний пункт – «Параметры».
- Нажмите, и попадете в окно «Параметры Excel». Слева перейдите в «Центр управления безопасностью».
- Справа в тексте кликните «Параметры. ».
- Откроется еще одно меню, где нужно выбрать «Параметры макросов».
- Отметьте один из пунктов, нажмите «Ок».
Закройте и запустите Excel снова, для вступления изменений в силу.
Как включить макросы в MS Excel 2007
Здесь способ не сильно отличается от того, как включить макросы в Excel 2010:
- Нажмите кнопку «Файл» (круглая желтая кнопка с цветными квадратами) слева сверху окна.
- В правой нижней части меню кликните на «Параметры Excel».
- Перейдите в раздел «Центр управления безопасностью», а затем «Параметры центра. »
- В открывшемся меню отметьте режим работы макросов, который нужен.
Перезапустите Эксель.
Как включить макросы в MS Excel 2003
2003 Эксель уступает в безопасности 2010-му, и включить макросы в нем легче, но важно тщательно проверять файлы на вирусы, пользуясь им. Включить исполнение макросов можно так:
- В открытом приложении нажмите на кнопку «Сервис» в верхнем меню.
- В выпадающем списке нажмите на «Макрос», и «Безопасность».
- Откроется меню безопасности, где нужно отметить уровень безопасности для макросов.
- Нажмите «Ок», и перезайдите в Эксель.
Включить макрокоманды можно одним из трех путей:
- во время показа окна сообщения;
- с помощью Backstage;
- когда появляется предупреждение системы безопасности.
Во время показа окна сообщения
Дополнительный способ работает, когда в Экселе открывается файл, содержащий макрокоманды. В верхней части листа появляется желтая карточка с надписью «Предупреждение системы безопасности». Кликните по «Включить содержимое», и они активируются.
С помощью Backstage
Если открыть книгу с макросами, в меню «Файл» появляется сообщение, позволяющее активировать их. Для этого сделайте следующее:
- Раскройте меню «Файл» — левая в ленте вверху страницы.
- В окне «Предупреждение системы безопасности» кликните по «Включить содержимое».
- Появится диалоговое меню, где необходимо будет отметить «Всегда включать активное содержимое этого документа».
После того как все получилось, перезагрузите приложение.
Активировать на одну сессию при появлении предупреждения системы безопасности
Способ включения только на один раз для одной книги:
- Раскройте меню «Файл» — левая в ленте вверху страницы.
- В окне «Предупреждение системы безопасности» кликните по «Включить содержимое».
- Перейдите в раздел «Дополнительные параметры».
- В появившемся поле активируйте пункт «Включить содержимое для этого сеанса» по очереди для каждого из макросов.
- Сохраните изменения, кликнув «Ок».
Понятие макроса
Термин «Макрос» слышало множество людей. Нередко при запуске таблицы появляется предупреждение: “Этот документ использует макросы, способные навредить данному компьютеру, поэтому они отключены с целью защиты от вредоносных действий”.
Макрос – действенный способ автоматизировать самые частые действия, которые нужно выполнять в электронных таблицах.
Макросы – это разновидность программирования. Разработка этих подпрограмм осуществляется с помощью языка VBA. Впрочем, некоторые виды макросов не требуют навыков программирования. Ведь существует еще такое понятие, как макрорекордер. Достаточно его включить и совершить некоторые действия, как далее они будут повторяться по нажатию одной кнопки.
Макросы могут быть реально опасными. Поскольку при их написании используется язык программирования, с его помощью можно создать настоящий вирус, который способен повредить информацию, а также собирать данные для злоумышленников (особенно опасно, если в таблице есть банковские данные, пароли и так далее).
Также макрос может запустить реальную троянскую программу на компьютере. Поэтому, чтобы не допустить вредоносных действий со стороны стороннего макроса, не стоит запускать макросы из сторонних источников, которым не доверяют.
Значительно проще объяснить, зачем нужны макросы, на реальном примере. Например, необходимо каждый день удалять из электронной таблицы несколько столбцов, а потом добавлять новые строки. Это невероятно утомительное занятие, отнимающее много времени. Если же воспользоваться макросами, есть реальная возможность значительно его сэкономить.
Макросы можно запускать по нажатию определенной комбинации клавиш. Например, если нажать Ctrl+J, можно запустить подпрограмму.
Интересный факт: известная программа бухгалтерского учета 1C изначально очень напоминала Excel, но потом ее функционал расширился до текущего.
Если же нужно давать компьютеру сложные инструкции, можно воспользоваться редактором Visual Basic, примеры кода в котором мы и рассмотрим немного позже.
Преимущества макросов VBA в Excel
Если VBA сложнее, чем запись макроса, зачем вам его использовать? Короткий ответ: вы получаете гораздо больше возможностей от макросов VBA.
Вместо того, чтобы щелкать по электронной таблице и записывать эти клики, вы можете получить доступ ко всему спектру функций и возможностей Excel. Вам просто нужно знать, как их использовать.
И как только вы освоитесь с VBA, вы сможете делать все, что можете, в обычном макросе за гораздо меньшее время. Результаты также будут более предсказуемыми, поскольку вы точно указываете Excel , что делать. Там нет никакой двусмысленности вообще.
Создав макрос VBA, его легко сохранить и поделиться им, чтобы каждый мог воспользоваться им. Это особенно полезно, когда вы работаете со многими людьми, которым нужно делать то же самое в Excel.
Давайте посмотрим на простой макрос VBA, чтобы увидеть, как он работает.