Home News

VBA Excel. Генерация документов (реестр, массив, бланк)

01.09.2018

видео VBA Excel. Генерация документов (реестр, массив, бланк)

Создание бухгалтерских документов в excel

Генерация визуальных форм документов из реестра с помощью 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.

rss