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


Советы тем, кто программирует на VB & VBA | КомпьютерПресс
Объектно-ориентированный подход имеет некоторые принципиальные отличия от процедурного. Сейчас этот тип программирования является наиболее популярным. Поэтому его нужно рассмотреть более детально применительно к макросам Excel.
Пользовательские формы в программах на vba
Цель работы –Изучение возможностей построения интерфейса программ на VBA с применением пользовательских форм.
Создание пользовательской формы в Excel
Пользовательская форма – диалоговое окно, в котором можно размещать элементы управления. Пользовательская форма позволяет создавать желаемый интерфейс, не ограничиваясь возможностями стандартного интерфейса Excel или других программ.
Чтобы создать пользовательскую форму в среде Excel и сделать ее работоспособной, требуется выполнить следующее:
— выбрать команду Сервис – Макрос – Редактор Visual Basic;
— в среде программирования Visual Basic выбрать команду Insert – UserForm. Создается пользовательская форма, т.е. пустое окно, где можно размещать элементы управления;
— вызвать на экран панель элементов управления (если она не вызвана автоматически). Для этого выбрать команду View – Toolbox (в других версиях – View – Controls);
— разместить в окне пользовательской формы желаемые элементы управления;
— используя меню свойств элементов управления, установить желаемые свойства пользовательской формы или размещенных на ней элементов управления. Для этого выбрать из списка в верхней части меню Properties желаемый элемент управления или пользовательскую форму (UserForm); после этого установить желаемые свойства;
— разработать программу на языке VBA для работы с пользовательской формой. Для этого выбрать команду View – Code. Вызывается редактор VBA, и открывается модуль пользовательской формы. В нем следует ввести текст программы для обработки событий, связанных с пользовательской формой (инициализация пользовательской формы, нажатие кнопок и т.д.);
— вернуться из режима разработки программы в режим работы с окном пользовательской формы. Для этого убедиться, что в окне проекта (в левой части экрана) выбрана отметка пользовательской формы, и выбрать команду View – Object;
— для начала работы с пользовательской формой (т.е. для ее “запуска”) выбрать команду Run/Run Sub/UserForm.
Рассмотрим примеры разработки программ с пользовательскими формами, содержащими различные элементы управления.
Создание элементов управления и указание их свойств
![]() |
![]() |
Рисунок 7.1 – Пользовательская форма (пример 7.1) во время работы программы | Рисунок 7.2 – Пользовательская форма (пример 7.1) в режиме редактирования |
Чтобы форма имела такой вид, как показано на рисунке 7.2, требуется с помощью меню Properties задать для нее следующие свойства:
— надписи: для первой надписи (на рисунке 7.2 – верхняя) указать свойство Caption – Левый верхний. Для второй надписи указать свойство Caption – Правый нижний, для третьей указать Caption – Результат;
— текстовые поля: для верхнего поля указать свойство Name – Nach, для следующего – Kon, для третьего – Rez;
— раскрывающийся список: Name – Operacii;
— кнопка для вычисления: Name – Schet, Caption – Вычислить;
— кнопка для закрытия формы: Name – Vyhod, Caption – Выход.
Примечание – Некоторые другие свойства элементов формы (например, перечень элементов списка и номер его текущего элемента) будут заданы в программе для работы с формой.
Чтобы приступить к написанию программы для работы с созданной пользовательской формой, требуется после создания формы, приведенной на рисунке 7.2, выбрать команду View – Code. Вызывается редактор VBA, и открывается модуль пользовательской формы. В нем необходимо ввести следующий текст программы (некоторые заголовки подпрограмм будут созданы автоматически):
В операторе Set d = Range(diap) переменная d связывается с диапазоном, заданным переменной diap. В двух следующих операторах определяется количество строк и столбцов в заданном диапазоне.
Аналогично, если выбран элемент списка с номером 1 (“произведение”), то вычисляется произведение ячеек в заданном диапазоне, и результат выводится в текстовое поле Rez.
Процедура Vyhod_click() выполняется при нажатии кнопки с именем Vyhod (т.е. кнопки Выход). Оператор Unload Sum_proizv закрывает форму.

Listbox vba excel примеры
Excel дает возможность управлять своими объектами (листами, ячейками, графиками) с помощью языка VBA. Чтобы создавать первые программы в Excel нужно иметь представление об объектной модели приложения.
![]() |
![]() |
Рисунок 7.1 – Пользовательская форма (пример 7.1) во время работы программы | Рисунок 7.2 – Пользовательская форма (пример 7.1) в режиме редактирования |
Заполнение ListBox с помощью свойства List
Свойство List позволяет в коде VBA Excel скопировать целиком одномерный или двухмерный массив значений в элемент управления ListBox. А также добавлять данные в элементы двухмерного списка по их индексам в строки, созданные методом AddItem.
Пример 3
Заполнение списка данными из одномерного массива.
Загрузка значений из переменной одномерного массива:
Пример 4
Заполнение списка данными из двухмерного массива.
Пример 5
Заполнение списка с тремя столбцами по каждому элементу отдельно. Создаем строку и записываем значение в первый столбец методом AddItem. Значения во второй и третий столбцы записываем с помощью свойства List по индексам:
Результат работы кода будет таким же, как в Примере 4.

Основы работы с модулями классов
Список используется в тех случаях, когда необходимо добавить в форму информацию, которая заранее известна, а ее отдельные позиции можно сгруппировать в список. Элемент управления ListBox оправдывает себя при небольших списках, так как большой список будет занимать много места на форме.