VBA Excel. Генерация документов (реестр, массив, бланк)
01.09.2018
Генерация визуальных форм документов из реестра с помощью VBA Excel. Использование массива для передачи данных из реестра в печатную форму (бланк) документа. Ссылка для скачивания файла с примером внизу.
Передача данных из реестра в массив Передача данных из массива в документ
Передача данных из реестра в массив
Порядок генерации документов из реестра с помощью VBA Excel будем рассматривать на примере Договора о материальной ответственности из статьи Реестр документов и печатная форма в Excel , где заполнение бланка (печатной формы) из реестра осуществляется с помощью формул.
Ввод данных в таблицу Excel с помощью Windows Form часть 1 из 2
Итак, допустим у нас есть следующий реестр:
Реестр документов в «Умной таблице» ExcelМы должны на основании данных из реестра заполнить бланк документа для вывода его на печать. Чтобы идентифицировать конкретный документ, будем использовать активную ячейку, которую выберем в нужной строке и ее номер определим с помощью кода VBA при запуске программы генерации печатной формы документа:
Excel VBA заполнение шаблонов из главной таблицы
nomer_stroki = ActiveCell.Row
Информацию о документе скопируем из реестра в массив , предварительно объявив его без указания размерности:
massiv = Range(Cells(nomer_stroki, 1), Cells(nomer_stroki, 10))Передача данных из массива в документ
Бланк документа можно хранить в отдельном файле или на скрытом листе книги с реестром, заполнять его данными из массива, а потом копировать в новую книгу. Но для простоты мы будем заполнять тот же бланк, который в статье Реестр документов и печатная форма в Excel заполнялся с помощью формул:
Договор о материальной ответственностиЗаполнить печатную форму документа можно, последовательно присваивая отдельным ячейкам значения из соответствующих элементов массива. Но мы сделаем немного по-другому: присвоим заполняемым ячейкам имена, различающиеся только порядковым номером («yacheyka_» с номером от 1 до 11*), и заполним их значениями из массива с помощью цикла. После окончания работы цикла и присвоения значения еще одной отдельной ячейке активируем лист с заполненным бланком документа.
*Имя «yacheyka_11» присвоим ячейке «G41», в которую повторно необходимо записать ФИО.
Вот такой получился код:
Private Sub CommandButton1_Click() Dim nomer_stroki As Long, massiv() As Variant, i As Integer nomer_stroki = ActiveCell.Row massiv = Range(Cells(nomer_stroki, 1), Cells(nomer_stroki, 10)) With Sheets("Печать ДМО") For i = 1 To 10 .Range("yacheyka_" & i) = massiv(1, i) Next .Range("yacheyka_11") = massiv(1, 3) .Select End With End SubРазмещен код в модуле листа «Реестр ДМО» и запускается кнопкой, размещенной на этом же рабочем листе.
Вы можете скачать файл с примером генерации документов из реестра с данными при помощи кода VBA Excel.