Режим MultiRow: один документ с данными из нескольких строк

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

Предположим, что у нас есть вот такая таблица в Excel, и перед нами стоит задача сформировать приказ на премирование сотрудников:

Причём, должно получиться не 14 отдельных документов (по количеству сотрудников), а один (или 4, по одному приказу на каждый отдел)

В этом нам поможет режим с названием MultiRow, реализованный специально для таких задач.

Включить режим MultiRow можно в настройках на вкладке «Дополнительно»:

 

Если нам нужен ОДИН общий приказ, мы включаем только первую галочку («Включить режим Multirow»), а если нужны отдельные приказы для 4 отделов, то включаем вторую опцию «Формировать по каждому шаблону столько файлов, сколько уникальных значений содержится в столбце», и указываем номер столбца с отделами — 3 «С»:

 

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

Инструкции по настройке шаблонов для режима Multirow:

 

Мы будем использовать такой шаблон:

 

ВНИМАНИЕ: настроенный файл шаблона и исходная таблицу Excel, на примере которых написана эта инструкция, прикреплены в конце этой статьи.
Можете скачать файлы, закинуть шаблон в папку Шаблоны, открыть таблицу Excel, и протестировать.

 

После того, как мы настроили шаблон, и поместили его в папку Шаблоны, можно пробовать сформировать документы.
Для этого:

  1. выделяем в исходной таблице несколько строк
    (либо в настройках на вкладке «Исходная таблица» включаем галочку «Формировать документы ПО ВСЕМ заполненным строкам таблицы»)
  2. нажимаем на панели инструментов кнопку Сформировать документы

 

Если мы всё настроили правильно, то по завершении заполнения приказов прогрессбар будет выглядеть так:

а в папке Документы должно появиться 4 файла:
(использовалась маска имени файла вида {%filename%} - {Отдел}.{%ext%} )

Документы

приказ о премировании - бухгалтерия.docx

приказ о премировании - сбыт.docx

приказ о премировании - склад.docx

приказ о премировании - снабжение.docx

 

Открываем один из сформированных файлов, и видим в нём следующее:

 

Если же мы в настройках не включали опцию «Формировать по каждому шаблону столько файлов, сколько уникальных значений содержится в столбце», то на выходе должны получить ОДИН документ, с данными из всех строк исходной таблицы:

 

Комментарии

Антон, такой возможности нет в программе (а реализовать её - очень сложно)

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

Денис, в программе это не предусмотрено (я вообще не очень понимаю, для чего это нужно, не видя ваш файл и не понимая ваших целей), но это можно решить фильтрацией исходной таблицы. Отфильтровать её так, чтобы остались видимыми только нужные строки (по которым надо формировать документы), и после этого запускать программу.

Добрый день! Подскажите, пожалуйста, если рассматривать Ваши примеры заполнения приказа, можно ли сделать так, чтобы отдел (например, бухгалтерия) заполнялся не столько раз, сколько сотрудников в отделе, а только один раз для первого сторудника?

Напишите мне в телеграм, скинете шаблон и таблицу с исходными данными, я проверю.

Дело как раз в том, что не только на 2021, но и на 2019 тоже не работает корректно (проверено также на основе ваших файлов из примера). А 2019 это очень большая аудитория. На 2017 не тестировали

По идее, одинаково работать должно. Размножение строк - это обычное копирование и вставка, и нет разницы, выполнить операцию эту 2-3 раза, или 100 раз. Office 2010 - стабильная версия (поэтому я ей до сих пор пользуюсь), офис 2021 - еще недостаточно обкатанный, могут быть сбои.

c Microsoft Office 2021 плохо что ли работает? Использую ваш шаблон и исходную таблицу из примера. При попытке сформировать документ, сформированный Приказ почему то начиная с какой то рандомной стоки запинается и начинает повторять ее до конца. Например "10 Ляшко Марат Наумович склад 400 ₽" повторяется 5 раз.
на Microsoft Office 2010 норм.

Здравствуйте, Елена
Скорее всего, неверно задан номер строки заголовка в настройках программы.
Если не разберётесь сами, напишите мне в телеграм, помогу найти проблему.

Добрый день! Нам нужно на основании данных с таблицы Excel сформировать направления в формате Word. Шаблоны настроила, но не получается настроить Excel. При нажатии на кнопку "Сормироваь документы", документ формируется, но внутри ничего е заполняется. В чем у меня ошибка?

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

Здравствуйте. При формировании в режиме Multirow word документа, формируется только одна страница документа, часть данных обрезается. Перенос на вторую страницу не происходит.

Смотрите второй параметр здесь:
https://excelvba.ru/programmes/FillDocuments/manuals/settings/TableTab

Добрый день, а как сформировать один документ, если между интересующими меня строка есть ненужные (допустим строки 1-3,6-7,10)

В Word нет возможности для такого подсчёта
Либо используйте шаблон Excel вместо шаблона Word, либо вычисляйте итоговое значение в отдельном столбце исходной таблицы Excel.

Добрый день. Замечательная надстройка!!! Подскажите, как в режиме MultiRow просчитать ИТОГО в одном столбце полученной в Word таблиы?

Добрый день как исправить следующие: если в ячейки формула он считает эту ячейку запиленной хотя она пустая и размножает пустую строку

а с формулами работает данная функция ? к примеру есть список
Купитман Иван Натанович
Кисегач Анастасия Константиновна
Черноус Варвара Николаевна
Быков Андрей Евгеньевич
Романенко Глеб Викторович

но данный список формируется за счет формул
=А1 (Купитман Иван Натанович)
=А2 Кисегач Анастасия Константиновна
=А3 Черноус Варвара Николаевна
=А4 Быков Андрей Евгеньевич
=А5 Романенко Глеб Викторович
=А6 пусто
=А7 пусто

Когда нажимаю сформировать документ он за место 5 строк создает 7 строк, видимо думает, что формула является запиленной ячейкой
как можно?

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

Здравствуйте, возможно-ли в режиме MultiRow предусмотреть дополнительные режимы (опыт по доработке у нас с вами имеется):

Множество CAD систем могут генерировать ведомости материалов в Excel, но "не только лишь все" делают это в соответствии с ГОСТ. Давайте поможем проектировщикам в формировании спецификаций и прочей табличной информации.

1. В форме надстройки добавить возможность множественного добавления строк Шапка с полями, для обработки переноса таблицы на новую страницу:
+ Автоинкримент. Порядковый номер шапки;
+ Строка. Значения. Где через знак & вводим зачения ячейки шапки в соответствии с количеством столбцов в шаблоне.
+ Чекбокс. НеЧетные; ЕСЛИ НеЧетные=1 повторяем вывод этой шапки на каждой первой строке не четной страницы ИНАЧЕ не выводим.
+ Чекбокс. Четные; ЕСЛИ Четные=1 повторяем вывод этой шапки на каждой первой строке четной страницы ИНАЧЕ не выводим.
Получаем возможность повторения шапок на добавленных страницах.
Вывод в шаблон предположительно так:{%head%/Порядковый номер шапки}

2. В форме надстройки добавить возможность множественного добавления строк фильтрации с полями:
+ Автоинкримент. Порядковый номер фильтра;
+ Выпадающий список. Вывод; Значения: Нет=0, Номер=1, Значение=2;
+ Числовое или выбор из списка. Номер колонки таблицы Excel;
Указывает колонку, по которой фильтруются строки Таблицы исходных данных.
ЕСЛИ Вывод=0 ничего не выводит в шаблон, ЕСЛИ Вывод=1 Порядковый номер фильтра, ИНАЧЕ значение поля фильтра. При помощи {Ячейка#} вывести необходимую доп. информацию из строки данных фильтра.
+ Строка. Значение; Явно задать значение фильтра.
+ Чекбокс. Пропускать; ЕСЛИ Пропускать=Пусто И Значение=Пусто, при отсутствии значения фильтра игнорировать текущий фильтр и переходить к следующему фильтру ЕСЛИ Пропускать=1 И Значение=НеПусто вывести Значение и перейти к следущему фильтру.
Вывод в шаблон предположительно так: {%filter%/Порядковый номер фильтра}.

3. Таблицы с фильтром по значению, по логике это схоже с работой "Формировать по каждому шаблону столько файлов, сколько уникальных значений содержится в столбце", но позволит в одном файле выводить несколько таблиц данные в которых отфильтрованы по полю. Либо собирать иерархическую структуру данных в одной таблице.
Вывод в шаблон предположительно так:{%index%/Порядковый номер фильтра}.

+ Чекбокс. По строкам. ЕСЛИ По Строкам=0 Все значение %index%{Поле#} в ячейку шаблона ИНАЧЕ Переносить каждую строку %index%{Поле#} в новую строку таблицы шаблона.

Кирилл, всё должно работать как вам надо. Две отдельные закладки с разными названиями. Видимо, вы назначаете закладку не абзацу целиком.

Добрый день!
Есть исходная таблица, в которой есть два столбца: ФИО продавца; ФИО покупателя.
В шаблоне Word, соответственно два абзаца: {ФИО продавца#}; {ФИО покупателя#}.
Есть случаи, когда и продавцов несколько, и покупателей тоже несколько. Как сделать так, чтобы и абзац {ФИО продавца#}, и абзац {ФИО покупателя#} размножались на несколько абзацев.
Если назначать этим абзацам закладки с одинаковым именем Multirow, то они вообще не размножаются на несколько абзацев, просто заполняется ФИО продавца. Тоже самое, если назначать этим абзацам разные закладки Multirow1, Multirow2 и т.д.

Если же назначить этим абзацам одну закладку Multirow, то абзацы размножаются, но они, конечно, чередуются. То есть:
1 абзац: ФИО продавца 1
2 абзац: ФИО покупателя 1
3 абзац: ФИО продавца 2
4 абзац: ФИО покупателя 2

А необходимо, чтобы сначала шли все продавцы, а потом все покупатели.

"А если написать {КодПоля#} - будет подставляться текст из разных строк" - в Word по какой-то причине не срабатывает, т.е. он копирует строки нужное кол-во раз, но при этом не вставляет значения из Excel построчно, а заполняет их значением {КодПоля#} как в шаблоне. Может быть такое, что Word может не считывать значок # в конце выражения

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

Здравствуйте, Александр
Для файлов текстового формата (XML, TXT и подобных) режим Multirow не применим.

Игорь, добрый день!

А можно ли наполнять с помощью Multirow шаблон XML?

Высылайте мне на почту исходный файл Excel, и пример желаемого результата (после заполнения)
Не видя файлов, ничего определённого сказать не могу.

Возможно ли с помощью multirow заполнять шаблон ссылаясь на несколько листов?

Ясно. А как из word обратиться к данным на другом листе excel? или надстройка работает только с одним листом?

Такой возможности нет в программе (привязки к определенным строкам, - до какой сюда, после какой туда)
Таблицу исходную в Excel надо в другой вид привести (понятный программе) - тогда может получиться.

Есть одна таблица excel в ней постоянно меняется количество строк. Мне нужно в шаблон в wordе вставить таким образом, что бы допустим в таблице excel есть 15 строк. Из них 5 строк до определенной помещались в одну таблицу, а остальные 10 строк в другую. И изначальное количество строк тоже меняется. Можно ли так сделать? Или если нет, то как разбить таблицу на разных листах и при этом из wordа обратиться в шаблоне к другому листу

Надо добавить мой сайт ExcelVBA.ru и расширение .XLA в список исключений, - тогда съедать не будет.
Потом заново скачать и запустить.

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

> найти скачанный файл надстройки в папке (обычно это папка «Загрузки»)
> щелкнуть правой кнопкой мыши на файле - Свойства - Разблокировать - ОК
> и только после этого запускать

Аваст "сожрал" надстройку. Говорит, VBA:Downloader-FGO (Trj)
Включил в безопасные, сожрал все равно. Как установить снова, и восстановить лицензию?

Вы можете использовать несколько меток multirow, в разных таблицах шаблона
(не уверен, что вам это нужно, - я не понял, что из чего вы хотите получить)

Multirow это то, что мне надо. Но скажите можно ли формировать несколько таблиц word разделив одну таблицу excel. Данные в таблице excel меняются, так что точное количество строк неизвестно.

Напишите мне в скайп, попробую помочь

я уже весь измучился не получается не как сделать все равно подставляет одно и тоже

Да вроде должно работать, в последней версии программы

Игорь, а Multirow с "Искать в шаблонах коды полей и заменять только найденные" не дружать?

В шаблонах Word - да, заполняет. В Excel - не помню, вроде не делал такого.

Доброго времени суток, подскажите пожалуйста, Ваша надстройка умеет заполнять Надпись (которую можно вставить в любом месте) в Экселе?

Здравствуйте, Михаил.
Программа заполняет только шаблоны Excel, Word и TXT.
Программа НЕ заполняет файлы других типов (ПДФ и подобное), - так что такого функционала нет, и не предвидится.

Здравствуйте! Будет ли реализована функция авто-заполнения текстовых полей PDF файла?

чтобы я смог помочь, от вас надо: http://ExcelVBA.ru/help

Так {sample#} пробовал тоже. Строка просто не размножается. Ставится первое значение из таблицы со значениями и все.

Если сами не разберетесь, - звоните в скайп, помогу.

Выделяю строку полностью стрелкой {sample#1}

Такого не должно быть в строке шаблона
там должно быть {sample#}
Тогда на место {sample#} (после размножения строки) подставятся значения из исходных выделенных строк.

Как я только не пробовал завести Multirow (настройки включил, столбец с данными в таблице выделил). Выделяю строку полностью стрелкой {sample#1}. Делаю закладку Multirow1. Пытался через добавления таблицы с 2 ячейками тоже не катит. Подскажите, пожалуйста, как заставить работать эту функцию на Office 2016 x64?

Нет, для шаблонов Word у меня нет такого функционала.
Используйте шаблон в формате Excel, - там всё получится:
http://excelvba.ru/programmes/FillDocuments/MultiRow/Group

Доброго времени! Скажите, а если надо вставить сумму (сама чтоб считала)в Ворд из выбранных строк Эксель. Такое возможно с этой функцией? Благодарю.

В инструкции описаны основные используемые коды полей:
http://excelvba.ru/programmes/FillDocuments/FieldCodes
Всё это, разумеется, относится только к моей надстройке.