Макрос на VBA Excel – Формируем документы по шаблону
Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье — Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.
В нашем примере мы, конечно, будем использовать простой шаблон, только для того чтобы это было просто наглядно и понятно (только в качестве примера), у Вас в свою очередь шаблон будет, как мне кажется намного сложней.
Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля


Учебник для начинающих по написанию макросов VBA в Excel (и почему вы должны учиться)
Для начала достаточно знать одно: данные бывают числами, а бывают строками, то есть текстом. С числами можно совершать одни действия (складывать и т.д.), со строками — другие (узнавать первый символ, например).
Пример записи макроса
Пусть требуется для выделенного диапазона ячеек, содержащих числа, установить режим форматирования в числовом виде с точностью до одного десятичного знака. Соответствующий макрос должен запускаться с помощью графического объекта «Кнопка».
- Выделить диапазон клеток, в котором задается формат. Важно сделать это до запуска макрорекордера, а не после, поскольку макрос должен быть применим для любого выделенного участка. В противном случае он будет форматировать только один диапазон.
- Запустить макрорекордер.
- Обратиться к меню Формат/Ячейки. и на вкладке «Число» выбрать числовой формат и «Число десятичных знаков» — 1.
- Щелкнуть мышью на любой ячейке, чтобы снять выделение диапазона.
- Нажать кнопку «Остановить запись» .
- Вызвать панель «Элементы управления» , щелкнуть по объекту «Кнопка» и, установив указатель мыши на свободное место листа, «растянуть» объект. Сменить надпись на кнопке можно двойным щелчком мыши по стандартной надписи, но если объект выделен. Выделяется объект правой кнопкой мыши и нажатием клавиши Esc для закрытия всплывающего меню форматирования объекта.
- В окне «Назначить макрос объекту» указать имя макроса, связываемого с кнопкой и нажать «Ok» .
- Щелкнуть мышью вне объекта «Кнопка» , чтобы подготовить макрос к работе.
- Восстановить исходные данные и опробовать работу макроса для различных выделяемых диапазонов.
На рисунке показан диапазон C1:E2, преобразованный в требуемый формат макросом, запускаемым кнопкой с надписью «Десятичный формат».

Макрос на VBA Excel – Формируем документы по шаблону | — IT-блог для начинающих
- Нажмите кнопку «Остановить запись» .
- Если запуск макроса планируется с помощью графического объекта, то выберите требуемый объект на панели «Формы» и разместите его на рабочем листе. Для вызова указанной панели следует обратиться к меню Вид/Панели инструментов. .После размещения объекта типа «Кнопка» откроется окно «Назначить макрос объекту» , в котором требуется указать имя макроса и нажать «Ok» . Для других объектов необходимо щелкнуть по нему правой кнопкой мыши, после чего из выпадающего меню следует выбрать пункт «Назначить макросу» и указать связь с макросом.
- Опробуйте действие макроса, предварительно восстановив исходное состояние таблицы.
Множество операций Excel можно автоматизировать посредством макросов. Но макросы имеют и ограничения. С помощью макросов нельзя выполнить различные действия в зависимости от содержимого ячейки, нельзя вызвать некоторые диалоговые окна Excel , например, сохранить документ, нельзя отобразить и использовать пользовательские формы ввода данных.
Преимущества макросов VBA в Excel
Если VBA сложнее, чем запись макроса, зачем вам его использовать? Короткий ответ: вы получаете гораздо больше возможностей от макросов VBA.
Вместо того, чтобы щелкать по электронной таблице и записывать эти клики, вы можете получить доступ ко всему спектру функций и возможностей Excel. Вам просто нужно знать, как их использовать.
И как только вы освоитесь с VBA, вы сможете делать все, что можете, в обычном макросе за гораздо меньшее время. Результаты также будут более предсказуемыми, поскольку вы точно указываете Excel, что делать. Там нет никакой двусмысленности вообще.
Создав макрос VBA, вы можете легко сохранить его и поделиться им, чтобы каждый мог воспользоваться им. Это особенно полезно, когда вы работаете со многими людьми, которым нужно делать то же самое в Excel.
Давайте посмотрим на простой макрос VBA, чтобы увидеть, как он работает.

VBA Excel: примеры программ. Макросы в Excel
Полученные результаты нужно сохранять в ячейки с номером (i,1). Тогда при каждом запуске цикла с увеличением i на величину шага автоматически будет расти и номер у строки. Таким образом, произойдет оптимизация кода.