У вас есть таблица с данными и шаблон в Word. Нужно, чтобы из каждой строки получился свой документ. В Word для этого есть встроенная функция — слияние. Она бесплатна, работает без надстроек и закрывает эту задачу лет двадцать.
Проблема в другом: почти каждый, кто доходит до слияния, упирается в одни и те же пять вещей. Ниже — подробная инструкция и честный разбор границ: где слияние справляется, а где начинается возня с кодами полей и макросами.
Слияние (mail merge) — это механизм Word, который берёт один документ-заготовку и таблицу-источник, а на выходе подставляет значения из таблицы в отмеченные места. Изначально его придумали для писем: одно письмо, тысяча адресатов, у каждого своё имя в шапке. Отсюда и название.
Сегодня им пользуются шире: договоры, приказы, справки, уведомления, сертификаты, наклейки, конверты. Логика везде одна — таблица даёт данные, документ даёт оформление.
Слияние живёт на вкладке «Рассылки». Никакие надстройки ставить не нужно, оно есть во всех версиях Word начиная примерно с 2007-го, включая Word 2016, 2019, 2021, 2024 и версию из Microsoft 365.
Половина проблем со слиянием возникает не в Word, а в исходной таблице. Прежде чем открывать «Рассылки», приведите Excel в порядок.
Заголовки — в первой строке, по одному на колонку. Именно они станут именами полей слияния. Никаких объединённых ячеек в шапке, никаких двухэтажных заголовков, никаких пустых колонок посередине.
Одна строка — один документ. Если данные об одном человеке размазаны по трём строкам, слияние сделает три документа. Приведите к плоскому виду.
Уберите лишние листы. Word подключается к конкретному листу. Если книга состоит из десяти листов с промежуточными расчётами, вы каждый раз будете выбирать нужный вручную и однажды ошибётесь.
Проверьте типы данных. Даты должны быть датами, а не текстом. Суммы — числами. Смешанные форматы в одной колонке — источник самых неприятных сюрпризов, о которых ниже отдельный раздел.
Заранее подготовьте всё, чего Word не умеет считать. Падежи ФИО, сумма прописью, склонение должностей — Word этого не делает. Если в договоре нужно «Иванову Ивану Ивановичу» в дательном падеже, заведите отдельную колонку и заполните её. Это скучно, но честно: морфологии в слиянии нет.
Откройте шаблон в Word. Вкладка «Рассылки» → «Начать слияние» → выберите тип. Для документов пачкой это «Письма»: несмотря на название, именно этот режим даёт «один документ на строку».
Дальше «Выбрать получателей» → «Использовать существующий список» → укажите файл Excel. Word спросит, какой лист использовать. Если в первой строке листа заголовки — оставьте галочку «Первая строка данных содержит заголовки столбцов».
После подключения документ становится связанным с файлом Excel. Это важно помнить: если вы потом переместите или переименуете таблицу, при следующем открытии Word будет ругаться и просить указать источник заново.
Ставим курсор туда, где должно появиться значение, и жмём «Вставить поле слияния». В выпадающем списке — имена колонок из вашей таблицы. Выбираем нужное, поле встаёт в текст в угловых кавычках: «ФИО».
Несколько практических правил, которые экономят время:
Нажмите «Просмотреть результаты» — Word покажет документ с данными первой строки. Стрелками рядом можно пролистать записи и убедиться, что нигде ничего не разъехалось.
Кнопка «Найти и объединить» даёт три варианта:
Обратите внимание на первый пункт: результат — один файл. Не сто файлов по одному на строку, а один документ на сто страниц. Это и есть первое ограничение, ради которого половина людей и ищет альтернативу.
Слияние умеет отдавать либо один общий документ, либо печать. Разложить результат на отдельные файлы — по одному на строку — штатными средствами нельзя. Это подтверждает и документация, и любой профильный форум: вопрос «как сохранить слияние отдельными файлами» задают из года в год.
Обходной путь — макрос VBA, который проходит по разделам итогового документа и сохраняет каждый в свой файл. Рабочий вариант выглядит так:
Sub SplitMergeToFiles()
Dim src As Document, dst As Document
Dim i As Long, total As Long
Dim outPath As String
outPath = "C:\Documents\Result\" ' папка должна существовать
Set src = ActiveDocument
total = src.Sections.Count
For i = 1 To total
src.Sections(i).Range.Copy
Set dst = Documents.Add
dst.Range.Paste
' убираем лишний разрыв раздела в конце
If dst.Sections.Count > 1 Then
dst.Sections(dst.Sections.Count).Range.Delete
End If
dst.SaveAs2 outPath & "Документ_" & i & ".docx", wdFormatXMLDocument
dst.Close False
Next i
MsgBox "Готово: " & total & " файлов", vbInformation
End SubКод работает, но у него есть цена. Во-первых, файлы получат имена «Документ_1», «Документ_2» и так далее — осмысленных имён из данных здесь нет. Во-вторых, макросы во многих организациях заблокированы политикой безопасности: Word откроет файл и покажет жёлтую полосу «Запуск макросов отключён». В-третьих, поддерживать этот код придётся вам.
Прямое следствие первого ограничения. Даже если вы разложили результат макросом, имя файла формируется счётчиком, а не данными. Получить «Иванов И.И. — трудовой договор.docx» вместо «Документ_17.docx» можно только усложнив макрос: читать значение поля из раздела, чистить его от недопустимых символов, подставлять в имя.
На практике это выливается в отдельную мини-разработку. А когда через полгода в шаблон добавится новая колонка, макрос придётся править снова.
Почему это важнее, чем кажется: папка из двухсот файлов с именами «Документ_1…Документ_200» практически неразбираема. Найти в ней договор конкретного сотрудника можно только открывая файлы по одному.
Вставить в каждый документ свою картинку — фотографию сотрудника на удостоверение, подпись руководителя, скан печати — слиянием напрямую нельзя. Excel не хранит изображения в ячейках так, чтобы Word мог их забрать.
Официальный обходной путь — поле INCLUDEPICTURE. Схема такая: в таблице заводится колонка с полным путём к файлу картинки, в документе вставляется поле INCLUDEPICTURE, внутрь которого подставляется поле слияния с этим путём. Выглядит примерно так:
{ INCLUDEPICTURE "{ MERGEFIELD ПутьКФото }" \d }И вот здесь начинается то, из-за чего эту тему обсуждают на форумах годами:
C:\\Фото\\ivanov.jpg. Одинарные Word воспринимает как служебные символы.Отдельная история — если бланк вообще не документ Word, а изображение: типографский диплом, сертификат с рамкой, бейдж. Слияние здесь не поможет никак, потому что работать с картинкой как с холстом оно не умеет.
Классическая ситуация: в Excel сумма выглядит как «1 250 000,00», а в готовом документе превращается в «1250000». Или дата «15.03.2026» становится «3/15/2026». Причина в том, что слияние забирает из ячейки не то, что вы видите, а хранимое значение.
Лечится ключами форматирования прямо в коде поля. Нажмите Alt+F9, чтобы увидеть код, и допишите ключ:
| Что нужно | Ключ в поле | Результат |
|---|---|---|
| Дата в российском формате | { MERGEFIELD Дата \@ "DD.MM.YYYY" } | 15.03.2026 |
| Дата прописью месяцем | { MERGEFIELD Дата \@ "D MMMM YYYY" } | 15 марта 2026 |
| Сумма с разделителями | { MERGEFIELD Сумма \# "# ##0,00" } | 1 250 000,00 |
| Целое число без дробной части | { MERGEFIELD Кол \# "0" } | 17 |
Ключ нужно дописывать к каждому полю отдельно. В договоре с пятнадцатью полями это пятнадцать раз Alt+F9 и ручная правка.
«Если у клиента есть филиал — добавить абзац про филиал, если нет — не добавлять». Штатно слияние такого не умеет. Есть поле IF, но оно работает на уровне одного значения, а не блока текста, и синтаксис у него недружелюбный.
На практике это решают двумя способами: либо делают несколько шаблонов под разные случаи и запускают слияние по частям, либо заводят в таблице колонку с готовым текстом абзаца и подставляют её целиком. Второй способ работает, но таблица быстро превращается в свалку.
Не нужно отказываться от слияния только потому, что у него есть границы. Оно отлично закрывает свою половину задач.
Слияния хватает, если: документов до полусотни, они однотипные, картинки в них не подставляются, результат можно распечатать или отдать одним файлом, и вы делаете это раз в квартал.
Слияние перестаёт справляться, когда: нужны отдельные файлы с понятными именами; в документ идут фото, подписи или печати; бланк — это изображение, а не Word; задача повторяется еженедельно, и возня с макросом каждый раз съедает больше времени, чем сама работа.
Дальше есть три дороги: писать макрос и поддерживать его самому, отдать задачу разработчику на Python, либо взять готовую программу, которая изначально делает то, чего слиянию не хватает.
SmartDocGen — как раз третий вариант. Логика та же: таблица, папка с шаблонами, папка результата. Разница в том, чем всё заканчивается.
Отдельные файлы сразу. Каждая строка таблицы даёт свой документ, никакого разбора общего файла макросом.
Имена файлов из данных. Заведите в таблице колонку «Имя файла» — её значение станет началом имени готового документа. Никакого кода.
Картинки без танцев с INCLUDEPICTURE. В шаблоне ставится {{IMG:Фото}}, в таблице — колонка с именем файла. Размер задаётся прямо в плейсхолдере: {{IMG:Подпись-w:40}}. Это то самое, ради чего люди мучаются с кодами полей.
Бланк-картинка тоже работает. Если диплом или сертификат существует только в виде изображения, к нему кладётся файл разметки, где указано, в какой точке каким шрифтом печатать каждое поле. Word так не умеет в принципе.
Форматы чисел берутся из Excel. Если в ячейке настроен формат «# ##0,00», в документ попадёт «1 250 000,00» — без ключей полей и Alt+F9. Даты приводятся к виду 15.03.2026 автоматически.
Плейсхолдеры работают везде. Как именно плейсхолдер связывается с колонкой таблицы, разобрано в отдельной статье — механика связки «таблица — шаблон — папка». Коротко: в тексте, в таблицах, во вложенных таблицах, в надписях и фигурах, в колонтитулах — включая колонтитул первой страницы и колонтитулы чётных страниц. У слияния с колонтитулами регулярно возникают сложности.
Теперь честно о том, чего в программе нет, чтобы не было разочарований:
Зато данные никуда не уходят: обработка идёт на вашем компьютере, файл с персональными данными не загружается ни на какой сервер. Для кадровых и юридических документов это часто решающий аргумент.
Слияние — рабочий бесплатный инструмент, и начинать стоит с него. Если ваша задача — разослать пятьдесят однотипных писем или распечатать пачку уведомлений, ничего другого не нужно.
Но как только к задаче добавляются отдельные файлы с нормальными именами, фотографии в документах или бланк-картинка, слияние начинает требовать макросов и кодов полей. В этот момент имеет смысл посчитать, сколько часов уходит на обслуживание обходных путей, и сравнить с готовым решением.
Проверить SmartDocGen на своих файлах проще всего по тарифу на месяц — 399 ₽. Бесплатного демо-режима у программы нет: установщик скачивается свободно, но для работы нужен код активации. Возьмите пять строк из реальной таблицы и свой настоящий шаблон — двадцати минут хватит, чтобы понять, закрывает программа вашу задачу или нет.


