Очень часто бывает такое, что нужно сформировать документы по определенному шаблону, на основе каких-то данных, например, по каждому сотруднику или по каждому лицевому счету. И делать это вручную бывает достаточно долго, когда этих самых сотрудников или лицевых счетов много, поэтому сегодня мы рассмотрим примеры реализации таких задач в Excel с помощью макроса написанного на VBA Excel.
Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.
Мы с Вами уже выгружали данные по шаблону через клиент Access из базы MSSql 2008 в Word и Excel вот в этой статье — Выгрузка данных из Access в шаблон Word и Excel. Но сейчас допустим, у нас данные располагаются в базе, в клиенте которой нельзя или слишком трудоемко реализовать такую задачу, поэтому мы просто выгрузим необходимые данные в Excel и на основе таких данных по шаблону сформируем наши документы.
В нашем примере мы, конечно, будем использовать простой шаблон, только для того чтобы это было просто наглядно и понятно (только в качестве примера), у Вас в свою очередь шаблон будет, как мне кажется намного сложней.
Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля
И так приступим!
Реализовывать нашу задачу будем на примере «Электронной карточке сотрудника» (я это просто придумал:), хотя может такие и на самом деле есть), т.е. документ в котором хранится личные данные сотрудника вашего предприятия, в определенном виде, именно в Excel.
Примечание! Программировать будем в Excel 2010.
И для начала приведем исходные данные, т.е. сами данные и шаблон
Данные.
Лист, на котором расположены эти данные так и назовем «Данные»
Шаблон.
Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»
Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки.
Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»
Свои поля я назвал следующим образом:
- ФИО – fio;
- № — number;
- Должность – dolgn;
- Адрес проживания – addres;
- Тел. № сотрудника – phone;
- Комментарий – comment.
Код макроса на VBA Excel
Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.
Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»
затем, в правой области поставьте галочку напротив пункта «Разработчик»
После вкладка разработчик станет отображаться на ленте.
Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».
После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код VBA. Ниже представлен код, я его как обычно подробно прокомментировал:
Sub Карточка() 'Книга NewBook = "" ' Путь, где будут храниться наши карточки ' Т.е. в той папке, откуда запустился файл с макросом Path = ThisWorkbook.Path ' Выбираем лист с данными Sheets("Данные").Select ' Запускаем цикл, скажем на 100000 итераций ' Начиная со второй строки, не учитывая заголовок For i = 2 To 100000 ' Выйдем из него, когда фамилии закончатся, т.е. строки If Cells(i, 1).Value = "" Then i = 100000 Exit For End If ' Имя файла карточки, назовем по фамилии Name_file = Path & "" & Sheets("Данные").Cells(i, 1).Value & ".xls" ‘Выбираем лист с шаблоном Sheets("Шаблон").Select ' Присваиваем значения нашим ячейкам, по именам которые мы задавали Range("fio").Value = Sheets("Данные").Cells(i, 1).Value & " " & _ Sheets("Данные").Cells(i, 2).Value & " " & Sheets("Данные").Cells(i, 3).Value Range("number").Value = Sheets("Данные").Cells(i, 4).Value Range("addres").Value = Sheets("Данные").Cells(i, 5).Value Range("dolgn").Value = Sheets("Данные").Cells(i, 6).Value Range("phone").Value = Sheets("Данные").Cells(i, 7).Value Range("comment").Value = Sheets("Данные").Cells(i, 8).Value ' Копируем все Cells.Select Selection.Copy ' Создаем новую книгу или делаем ее активной If NewBook = "" Then Workbooks.Add NewBook = ActiveWorkbook.Name Else Workbooks(NewBook).Activate Cells(1, 1).Select End If ' Вставляем данные в эту книгу Application.DisplayAlerts = False ActiveSheet.Paste Application.CutCopyMode = False ' Сохраняем с нашим новым названием ActiveWorkbook.SaveAs Filename:= _ Name_file, FileFormat:=xlExcel8, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False NewBook = ActiveWorkbook.Name Application.DisplayAlerts = True ' Снова активируем файл с макросом и выбираем лист Workbooks("Макрос.xls").Activate Sheets("Данные").Select ' Переходим к следующей строке Next i ' Закроем книгу Workbooks(NewBook).Close ' Выведем сообщение об окончании MsgBox ("Выполнено!") End Sub
Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:
и после выполнения у Вас в той же папке появится вот такие файлы
Вот с таким содержимым:
Для удобства можете на листе с данными создать кнопку и задать ей событие выполнить наш только что созданный макрос, и после чего простым нажатием выполнять этот макрос. Вот и все! Удачи!
Предназначение программы: заполнение множества документов данными из Excel нажатием одной кнопки.
Для работы программы требуется таблица Excel с данными для подстановки, и папка с шаблоном (шаблонами) документов.
В качестве шаблонов можно использовать файлы Word и Excel.
На выходе получаются заполненные файлы исходного формата, или формата PDF.
Возможно формирование писем по шаблону, с последующей рассылкой через Outlook или TheBAT.
- Количество шаблонов не ограничено. Вы легко можете сами настраивать любые шаблоны.
В качестве шаблонов могут выступать файлы Excel (XLS, XLSX и др.), документы Word (DOC, DOCX и др.), а также текстовые документы (расширения TXT, DAT, XML и т.д.). - Гибкая настройка имён создаваемых файлов. Можно раскладывать файлы по подпапкам.
- Подстановка таблиц и картинок (фото, печатей, подписей и т.п.) в заполняемые документы.
- Склонение фамилий, дата и сумма прописью, — дополнительные функции обработки данных.
- Рассылка почты (писем с вложениями) через TheBAT! или Outlook. Можно формировать красивые HTML-письма
- Есть возможность формировать один документ по нескольким строкам исходной таблицы.
(вывести список сотрудников в приказ, список товаров в накладную, и т.д.). - Можно выбирать шаблоны для заполнения в диалоговом окне
(или даже программа будет сама брать нужные шаблоны для разных строк) - Подстановка данных в надписи и колонтитулы шаблонов Word.
С момента выхода программы в 2012 году, её функционал постоянно развивался (вышли десятки обновлений), поэтому сейчас в FillDocuments есть всё, что только может вам понадобиться для задачи создания документов по шаблонам.
Более подробно всё это описано в разделе Справка по программе
�������������� �������� ���������� Word �� ������ ��������� ������ Excel
�������������� �������� ���������� Word �� ������ ��������� ������ Excel
� ������ ������� �� ���������� ����, � ������� �������� ����� ������������� ��������� ��������� ��������� Word �� ������ ������, ���������� � ������� Excel. ��� ������ ����������, ��������, ��� �������� ������������ ��������� �������, � ������� ������ ������������ ��������� ������. ������������� ����� ������ �� ���������� �� ���������� �������.
�����������, ��� � ��� ���� ��������� ������ � �������� �� �������� (���.�3.31).
��������!
��� �������� ������� ������� ������� �������� �������� �� ������������������ �� ������� ����� (�� ���� �� ���������� ��������������� �����).
��� ��������������� �������� ������� �� ��������� ����������� ������ ������� � ����������� ������ ��������� VBA �������� ���, ����������� � �������� 3.85.
���.�3.31. ������ � ��������
������� 3.85. �������� ���������� Word �� ������ ������� Excel
Sub ReportToWord()
Dim intReportCount As Integer ‘ ���������� ���������
Dim strForWho As String ‘ ���������� ���������
Dim strSum As String ‘ ����� �� �����
Dim strProduct As String ‘ �������� ������
Dim strOutFileName As String ‘ ��� ����� ��� ����������
���������
Dim strMessage As String ‘ ����� ��������������� ���������
Dim rgData As Range ‘ �������������� ������
Dim objWord As Object
Dim i As Integer
‘ �������� ������� Word
Set objWord = CreateObject(�Word.Application�)
‘ ���������� � �������� �����
Set rgData = Range(�A1�)
strMessage = Range(�E6�)
‘ �������� ������� �� ����� ����1
intReportCount = Application.CountA(Range(�A:A�))
For i = 1 To intReportCount
‘ ������������ ��������� � ������ ���������
Application.StatusBar = «�������� ��������� » & i
‘ ���������� ������ ����������
strForWho = rgData.Cells(i, 1).Value
strProduct = rgData.Cells(i, 2).Value
strSum = Format(rgData.Cells(i, 3).Value, �#,000�)
‘ ��� ����� ��� ���������� ������
strOutFileName = ThisWorkbook.path & «» & strForWho &
�.doc�
‘ �������� ������ � Word
With objWord
.Documents.Add
With .Selection
‘ ��������� ���������
.Font.Size = 14
.Font.Bold = True
.ParagraphFormat.Alignment = 1
.TypeText Text:=»� � � � �»
‘ ����
.TypeParagraph
.TypeParagraph
.Font.Size = 12
.ParagraphFormat.Alignment = 0
.Font.Bold = False
.TypeText Text:=»����:» & vbTab & _
Format(Date, �mmmm d, yyyy�)
‘ ���������� ���������
.TypeParagraph
.TypeText Text:=�����: ��������� » & vbTab &
strForWho
‘ �����������
.TypeParagraph
.TypeText Text:=»��:» & vbTab &
Application.UserName
‘ ���������
.TypeParagraph
.TypeParagraph
.TypeText strMessage
.TypeParagraph
.TypeParagraph
‘ �������� ������
.TypeText Text:=»������� ������:» & vbTab &
strProduct
.TypeParagraph
‘ ����� �� �����
.TypeText Text:=»�� �����:» & vbTab & _
Format(strSum, �$#,##0�)
End With
‘ ���������� ���������
.ActiveDocument.SaveAs FileName:=strOutFileName
End With
Next i
‘ �������� ������� Word
objWord.Quit
Set objWord = Nothing
‘ ���������� ������ ���������
Application.StatusBar = False
‘ ����� �� ����� ��������������� ���������
MsgBox intReportCount & «�������� ������� � ��������� � ����� » _
& ThisWorkbook.path
End Sub
� ���������� ��������� ���� � ���� ������ �������� ������ ��������� ������ ReportToWord. ����� ��� ������� �������� ������������ ������� (���������� � ��������� �������� ����� ������������ � ������ ���������). �� ��������� �������� �� ������ ����������� ���� � ���������� � ���, ��� ��������� ������������ � �������� � �� �����, � ������� �������� ������� ������� �����. � ��������������� ������� ����� ������� ��� ��������� � ������� ������� 1.doc, ������� 2.doc � ������� 3.doc. ���������� ��������� ������� 1. doc �������� �� ���.�3.32 (������ ��������� �������� ����������� �������).
� ��������������� ������� Lesha � ��� ��� ������������, ������� ������ ��������. ��������, ��� � ���������� �������� ��������������� ��������� � ��� ������� ����� ������������ ������ ����� �������������� �� ������ ����������.
���.�3.32. �������� Word, ��������� �� ������ ������ ������� Excel
Как известно, табличный редактор Excel используется для работы с табличными данными, а текстовый редактор Word для работы с текстами. И одно и другое приложение широко используются пользователями для подготовки различного рода документов, таких как договоры, сметы, акты выполненных работ, квитанции, путевые листы, доверенности и так далее. Кроме того, зачастую различные реестры и базы данных с информацией по клиентам, продавцам, покупателям, поставщикам и подрядным организациям создаются в приложении Excel, а сами данные из этих реестров используются для составления документов и заполнения шаблонов в текстовом редакторе Word. Далее рассматриваются варианты автоматизации при заполнении документов данными из рабочих книг Excel.
Большое количество документов создается пользователями в табличном редакторе Excel, это всевозможные приказы, ведомости, графики, журналы, ордера, акты, чеки, счета и счет-фактуры. Все это изобилие документов требует своего заполнения. Какие-то бланки заполняются специальными программами по учету финансово-хозяйственной деятельности, такими как 1С или SAP, какие-то просто распечатываются для дальнейшего заполнения их вручную, а какие-то требуют своего заполняются на компьютере с последующей печатью. Достаточно часто возникает необходимость сформировать сразу несколько документов, в которых используются одни и те же данные, например счет, счет-фактура и акт выполненных работ.
Процесс заполнения бланков документов в Excel можно автоматизировать. Одним из способов автоматизации является использование надстройки для заполнения подготовленных бланков документов.
Надстройка для Excel позволяет выбрать как один, так и несколько бланков документов и быстро заполнить их данными активного рабочего листа, предварительно подготовленными для этого.
надстройка для заполнения бланков и шаблонов в Excel
Заполнение бланков Excel исходными данными по списку
В случаях, когда в качестве исходных данных используется готовый список значений, можно использовать надстройку, которая заполняет выбранные бланки и шаблоны по каждой строке списка в отдельности. Эта надстройка отличается от описанной выше программы тем, что предыдущая надстройка заполняет бланки документов одним набором исходных значений, а эта программа осуществляет заполнение документов сразу по всему списку данных. Если нужно запустить процесс заполнения не по каждой строке, а по каким-то отдельным, то используются стандартные фильтры Excel.
Надстройка также позволяет выбирать сразу несколько шаблонов для заполнения.
надстройка для заполнения бланков и шаблонов в Excel по списку
Другие материалы по теме:
Цель процесса автоматического создания документов
Автоматическое создание документа — базовая единица оптимизации ресурсных затрат Вашей организации. Деятельность любой компании неразрывно связана с документооборотом, будь то управление персоналом — кадровая служба (заявления на отпуск, увольнение, больничный), бухгалтерия, либо же просто формирование определенного пакета документов по той или иной активности компании. Зачастую, сам процесс подготовки документов сводится к монотонным действиям по расстановке конкретных значений по заранее отведенным позициям в шаблоне. Слабыми сторонами данного подхода являются: низкая скорость подготовки документации и высокая степень возникновения ошибки ввиду человеческого фактора. При росте объема документации вероятность ошибки только возрастает, например, Вам нужно подготовить доп соглашения для всего штата сотрудников. Основные задачи программы автоматического создания документов Word на основе шаблонов — свести к минимуму вероятность возникновения ошибок ввода, значительно увеличить скорости самого процесса. Все действия сводятся к выбору записи или записей данных о сотруднике/клиенте/заказе/поставщике из исходной таблицы и указанию шаблона подготавливаемого документа.
Ссылки для скачивания:
— Скачать макрос автоматического создания документов Word по шаблону (архив 208КБ)
Как начать работу с автоматическим формированием документов Word:
1. Разархивируйте скачанный архив с файлом с помощью программы 7zip или WinRar.
2. При появлении сообщения о доверенном источнике: закройте программу, кликните правой кнопкой мыши на файле — «Свойства», далее установите галочку напротив «Разблокировать».
3. Если в Вашем Excel запуск макросов по умолчанию отключен, в данном окне необходимо нажать «Включить содержимое».
4. Для полноценной работы с файлом необходимо нажать «Разрешить редактирование» при появлении данного сообщения.
Автоматическое создание документа — этап 1. Настройка программы
Все действия по настройке макроса и сам процесс построения документов происходят на листе «Настройки», который условно можно разделить на две области: таблица исходных данных и панель кнопочного управления.
Таблица исходных данных состоит из строки меток (условных обозначений каждого столбца) — строка №3, заголовка с названиями столбцов — строка №4 и построчных записей — начиная с 5й строки. Количество колонок, их названия и условные обозначения можно свободно редактировать, соблюдая простые правила:
- Если Вы добавляете новую колонку, у нее должно быть название и условное обозначение.
- Для склонения ФИО сотрудника в Родительный или Дательный падежи используйте встроенные функции =RODP() и =DATP() соответственно.
- Не допускайте наличия пустых колонок (без названий и обозначений) между колонками данных.
- Не удаляйте колонку «ФИО сотрудника», т.к. она является ключевой для работы программы. Вы можете ее переименовать — заказчик, ответственный, клиент, менеджер и т.д. на свое усмотрение. Она используется в процессе сохранения итогового word документа, как часть имени, например: Иванов А.В. Заявление на отпуск, Петров В.К. Накладная на отгрузку.
Также Вы можете разбивать записи таблицы (строки) на группы. Например Вы хотите завести сотрудников по отделам или заказчиков по направлениям деятельности, или городам расположения и т.д..
Панель кнопочного управления автоматизированного создания документов состоит из следующих элементов интерфейса:
- Добавить запись — вставляет новую строку в заранее выбранную вами ячейку. Также можно добавлять записи вручную с помощью стандартной вставки строки excel;
- Добавить группу — вставляет новую серую строку группы в заранее выбранную вами ячейку;
- Удалить элемент — удаляет любую выбранную строку таблицы данных;
- Очистить таблицу — полностью стирает данные из таблицы. Можно использовать для очистки листа от тестовых данных;
- Создать документ — выбор шаблона word для построения документа. Перед этим в таблицы должны быть выбраны записи данных, по которым необходимо произвести построение.
Перед запуском процедуры автоматизированного создания документов убедитесь, что указаны верные пути к word шаблонам и папке сохранения результатов построения!
Автоматическое создание документа — этап 2. Шаблоны Word
Процесс подготовки word шаблонов для автоматического построения документов включает в себя рад несложных действий. Создайте общую папку для всех шаблонов, в ней создайте папки категорий, чтобы разделить шаблоны по областям применения (названия категорий укажите на свое усмотрение). В каждой подпапке определенной категории расположите непосредственно документы word с расставленными метками. Метки расположены в 3й строке таблицы над каждый ее столбцом. Поставьте метки в те места шаблона, в которые вы хотите прокачать данные из определенного столбца. Например, там где должно быть фио сотрудника укажите [fio].
Порядок действий запуска автоматического создания документов
Когда таблица данных заполнена, а метки в шаблонах расставлены по своим местам пора приступать к самой интересной части — автоматизированному формированию документов word.
В первую очередь, выделите строку или диапазон данных таблицы, по которым хотите сформировать документы:
Шаг номер два — нажмите кнопку «Создать документ». Перед Вами появится диалоговое окно, в котором нужно выбрать подпапку — категорию документа и один, либо несколько шаблонов построения. Далее кликните по кнопке «Сформировать документы».
Мои поздравления! Документы успешно сформированы и лежат по указанному Вами пути для сохранения!
Заказать разработку программ или доработку любого проекта
Благодарю Вас за прочтение данной статьи. Надеюсь, что материал подан понятно и я смог ответить на большую часть Ваших вопросов по поводу автоматизации создания документов. Но, как говорится, лучше один раз попробовать, чем сто раз прочитать. Скачивайте программу по ссылке вверху или внизу статьи, в архиве также идет набор тестовых данных, которые содержат как шаблоны, так и заполненную таблицу самого макроса. Просто разархивируйте файлы в любое доступное место и начинайте работу.
Всегда рад ответить на Ваши вопросы, готов подготовить оптимальные решения обработки данных для Вашего бизнеса, автоматизировать рутинные процессы, связаться со мной можно через WatsApp 89507094770, сайт excellab.ru или написать на почту: goryaninov@bk.ru, профиль вк:
Ссылки для скачивания:
— Скачать макрос автоматического создания документов Word по шаблону (архив 208КБ)
Здесь можно ознакомиться с другими программами автоматизации, которые представлены на моем сайте:
— Дневной табель учета рабочего времени в excel
— Почасовой табель учета рабочего времени в excel
— Табель учета рабочего времени в днях по форме Т-13
— Табель расчет и планирование вахты
— Табель учета рабочего времени с учетом ночных смен
— Платежный календарь в excel