Автоматическое создание документов в excel

Очень часто бывает такое, что нужно сформировать документы по определенному шаблону, на основе каких-то данных, например, по каждому сотруднику или по каждому лицевому счету. И делать это вручную бывает достаточно долго, когда этих самых сотрудников или лицевых счетов много, поэтому сегодня мы рассмотрим примеры реализации таких задач в Excel с помощью макроса написанного на VBA Excel.

Немного поясню задачу, допустим, нам необходимо сформировать какие-то специфические документы по шаблону массово, т.е. в итоге их получится очень много, как я уже сказал выше, например, по каждому сотруднику. И это нужно сделать непосредственно в Excel, если было бы можно это сделать в Word, то мы бы это сделали через «Слияние», но нам нужно именно в Excel, поэтому для этой задачи мы будем писать макрос.

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

В нашем примере мы, конечно, будем использовать простой шаблон, только для того чтобы это было просто наглядно и понятно (только в качестве примера), у Вас в свою очередь шаблон будет, как мне кажется намного сложней.

Напомню, что на данном сайте тема VBA Excel уже затрагивалась, например, в материале – Запрет доступа к листу Excel с помощью пароля

И так приступим!

Реализовывать нашу задачу будем на примере «Электронной карточке сотрудника» (я это просто придумал:), хотя может такие и на самом деле есть), т.е. документ в котором хранится личные данные сотрудника вашего предприятия, в определенном виде, именно в Excel.

Примечание! Программировать будем в Excel 2010.

И для начала приведем исходные данные, т.е. сами данные и шаблон

Данные.

Скриншот 1

Лист, на котором расположены эти данные так и назовем «Данные»

Шаблон.

Скриншот 2

Лист, на котором расположен шаблон, тоже так и назовем «Шаблон»

Далее, нам необходимо присвоить имена полей для вставки, так более удобней к ним обращаться чем, например, по номеру ячейки.

Это делается очень просто, выделяете необходимую ячейку или диапазон, и жмете правой кнопкой мыши и выбираете «Присвоить имя», пишите имя ячейки и жмете «ОК»

Курс по SQL для начинающих

Скриншот 3

Свои поля я назвал следующим образом:

  • ФИО – fio;
  • № — number;
  • Должность – dolgn;
  • Адрес проживания – addres;
  • Тел. № сотрудника – phone;
  • Комментарий – comment.

Код макроса на VBA Excel

Для того чтобы написать код макроса, открывайте на ленте вкладку «Разработчик», далее макросы.

Примечание! По умолчанию данной вкладке в Excel 2010 может и не быть, чтобы ее отобразить нажмите правой кнопкой по ленте пункт меню «Настройка ленты»

Скриншот 4

затем, в правой области поставьте галочку напротив пункта «Разработчик»

Скриншот 5

После вкладка разработчик станет отображаться на ленте.

Далее, когда Вы откроете вкладку разработчик и нажмете кнопку «Макросы» у Вас отобразится окно создания макроса, Вы пишите название макросы и жмете «создать».

Скриншот 6

После у Вас откроется окно редактора кода, где собственно мы и будем писать свой код 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

Теперь осталось выполнить этот макрос, для этого откройте вкладку разработчик->макросы->выполнить наш макрос:

Скриншот 7

и после выполнения у Вас в той же папке появится вот такие файлы

Скриншот 8

Вот с таким содержимым:

Скриншот 9

Для удобства можете на листе с данными создать кнопку и задать ей событие выполнить наш только что созданный макрос, и после чего простым нажатием выполнять этот макрос. Вот и все! Удачи!

Предназначение программы: заполнение множества документов данными из 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 позволяет выбрать как один, так и несколько бланков документов и быстро заполнить их данными активного рабочего листа, предварительно подготовленными для этого.

kak zapolnit rabochie knigi dannymi aktivnogo lista

CompleteSolutionнадстройка для заполнения бланков и шаблонов в Excel

Заполнение бланков Excel исходными данными по списку

В случаях, когда в качестве исходных данных используется готовый список значений, можно использовать надстройку, которая заполняет выбранные бланки и шаблоны по каждой строке списка в отдельности. Эта надстройка отличается от описанной выше программы тем, что предыдущая надстройка заполняет бланки документов одним набором исходных значений, а эта программа осуществляет заполнение документов сразу по всему списку данных. Если нужно запустить процесс заполнения не по каждой строке, а по каким-то отдельным, то используются стандартные фильтры Excel.

 Надстройка также позволяет выбирать сразу несколько шаблонов для заполнения.

avtomaticheskoe zapolnenie blankov excel po spisku

CompleteSolution

надстройка для заполнения бланков и шаблонов в 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 шаблонов для автоматического построения документов включает в себя рад несложных действий. Создайте общую папку для всех шаблонов, в ней создайте папки категорий, чтобы разделить шаблоны по областям применения (названия категорий укажите на свое усмотрение). В каждой подпапке определенной категории расположите непосредственно документы word с расставленными метками. Метки расположены в 3й строке таблицы над каждый ее столбцом. Поставьте метки в те места шаблона, в которые вы хотите прокачать данные из определенного столбца. Например, там где должно быть фио сотрудника укажите [fio].

Порядок действий запуска автоматического создания документов

Когда таблица данных заполнена, а метки в шаблонах расставлены по своим местам пора приступать к самой интересной части — автоматизированному формированию документов word.

В первую очередь, выделите строку или диапазон данных таблицы, по которым хотите сформировать документы:

Автоматическое создание документа Word

Шаг номер два — нажмите кнопку «Создать документ». Перед Вами появится диалоговое окно, в котором нужно выбрать подпапку — категорию документа и один, либо несколько шаблонов построения. Далее кликните по кнопке «Сформировать документы».

окно выбора шаблон Word

Мои поздравления! Документы успешно сформированы и лежат по указанному Вами пути для сохранения!

Заказать разработку программ или доработку любого проекта

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

Всегда рад ответить на Ваши вопросы, готов подготовить оптимальные решения обработки данных для Вашего бизнеса, автоматизировать рутинные процессы, связаться со мной можно через WatsApp 89507094770, сайт excellab.ru или написать на почту: goryaninov@bk.ru, профиль вк:

Ссылки для скачивания:

— Скачать макрос автоматического создания документов Word по шаблону (архив 208КБ)

Здесь можно ознакомиться с другими программами автоматизации, которые представлены на моем сайте:

— Дневной табель учета рабочего времени в excel
— Почасовой табель учета рабочего времени в excel
— Табель учета рабочего времени в днях по форме Т-13
— Табель расчет и планирование вахты
— Табель учета рабочего времени с учетом ночных смен
— Платежный календарь в excel

Понравилась статья? Поделить с друзьями:
  • Автоматическое создание графика работы в excel
  • Автоматическое содержание в word это
  • Автоматическое содержание microsoft word
  • Автоматическое собирание оглавления в word
  • Автоматическое сложение в excel