Режим 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

 

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

 

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

 

ВложениеРазмерЗагрузкиПоследняя загрузка
Шаблон приказа о премировании.docx29.85 КБ0Ещё не загружался
Исходная таблица со списком сотрудников.xlsx10.12 КБ0Ещё не загружался

Комментарии

"А если написать {КодПоля#} - будет подставляться текст из разных строк" - в 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
Всё это, разумеется, относится только к моей надстройке.

Благодарю. Настолько сильно не знаком с программой, а вот исчерпывающий список кодов где то посмотреть можно?, или они относятся только к вашей надстройке.

Для нумерации строк, в строке под меткой Multirow можно использовать код поля {%index%}

а при добавлении строк как реализовать сплошную нумерацию? Спасибо.

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

Доброго времени суток. Спасибо большое за программу.
Воспользовался программой Multirow и столкнулся с проблемой, что при вставке данных из таблицы нарушается строка и вставленные данные с новой строки. Возможно как-то сделать чтобы вставлялись не новая строка, а продолжался текст?

Увы, такой вариант тоже не сработает.
В программе такое не предусмотрено, - ранее никто из пользователей не просил скрестить ежа с ужом подставлять в письма содержимое заполненного документа Word в режиме Multirow.

Могу доработать программу, - но только за дополнительную плату (работы много очень)

Спасибо за быстрый ответ!
А если сначала сформировать файлы, положить их в какую-нибудь папку, и при повторном запуске программы скопировать содержимое файлов в письма (аналогично вставки по метке PasteWordDoc)?

Здравствуйте, Светлана
Такой возможности нет, - пока только прикрепление заполненных файлов.

Но вы можете получить письмо нужного вида, настроив шаблон текста письма в формате HTML, — чтобы получить на выходе форматированный текст с подставленными значениями
(только на текст письма не распространяется функция Multirow)

Спасибо огромное за функцию MultiRow! Все получилось с первого раза! Но возник вопрос, возможен ли перенос содержимого созданного документа Word в тело письма? Спасибо!

Так в Excel выделяете блок из 3 строк, и назначаете ему метку (имя) Multirow
В Excel всё должно корректно копироваться, независимо от количества строк в именованном диапазоне

Другими словами, задача та же, что и для Ворда. А в Экселе как это же осуществить? Какой хитростью воспользоваться?
Заранее спасибо!

Михаил, из описания проблема непонятна.
Если сами не разберетесь, - звоните в скайп, попробую помочь
От вас для этого надо: http://ExcelVBA.ru/help

Отлично! Действительно сработало, спасибо!
А в Экселе возможно копирование нескольких строчек? Если указать каждую строчку MultiRow1, MultiRow2, MultiRow3, то в результате он перечислит значения из исходной таблицы, но в виде:
Иванов
Петров
Сидоров
Иван
Петр
Сидор
Иванович
Петрович
Сидорович
А должно быть:
Иванов
Иван
Иванович
Петров
Петр
Петрович и т.д.

Здравствуйте, Михаил
Закладки с именами типа MultiRow1 и MultiRow2 программа должна понимать (обрабатываются любые закладки, название которых начинается со слова MultiRow)
Насчёт нескольких строк (абзацев) под одной закладкой - не проверял

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

Могу предложить неочевидный, но точно работающий способ:
1) вставляете в шаблон ТАБЛИЦУ из 2 строк и одного столбца
2) первую строку делаете минимальной высоты, установкой размера шрифта = 1 пункт
3) во вторую ячейку (строку) вставляете несколько абзацев размножаемого текста
4) второй строке таблицы назначаете метку Multirow
5) делаете рамки таблицы невидимыми

так точно будет работать, и выглядеть результат будет также, как и без таблицы.
PS: первая (пустая) строка таблицы нужна, т.к. без неё размножение строк не всегда корректно выполняется.

Добрый день!
Программа действительно мощная, но возник вопрос:
Выделаю курсором (подвожу к строке или абзацу СЛЕВА) несколько строчек (абзацы разные, т.к. разделены Энтером), создаю закладку MultiRow. Запускаю формирование - пустота. Пробовал каждую строку (абзац в моём случае) загонять в отдельную закладку MultiRow1 и MultiRow2 - то же самое, не понимает программа 1 и 2 в названии закладок.
Проверяю работоспособность на одной строке - всё в порядке.
Что я не учёл?
Спасибо!

Наконец то понял как ! ))) Надо подвести мыша слева от строки (за границей таблицы,стрелка БЕЛОГО ЦВЕТА будет направлена в правый верхний угол) и ОДИН РАЗ ЩЕЛКНУТЬ (выделится строка целиком)

В статье написано:

ВАЖНО! Перед назначением закладки, надо выделить абзац текста или строку таблицы ЦЕЛИКОМ.

Для этого, подведите курсор к строке или абзацу СЛЕВА, — при этом, курсор изменит направление, - стрелка будет направлена в правый верхний угол.

Т.е. не надо выделять ячейки строки!
Дало подвести мыша слева от строки, и ОДИН РАЗ ЩЕЛКНУТЬ (выделится строка целиком)
После этого назначить закладку.
И всё будет работать.

Как-то вчера заработало после долгих мучений, но принципа выделения строк я так и не понял, таблица из одной строки создаваться не хочет, как минимум 2 строки приходится делать

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

Если сами не разберетесь, - могу помочь: http://ExcelVBA.ru/help

С таблицами всё таки не получилось разобраться, таблицу или её строку c закладкой из шаблона стирает, на выходном документе пустота. Простые строки с закладками multirow работают

Действительно, всё отлично работает.
Я немного не поняла объяснений, показалось, что MultiRow1, MultiRow2 и т.п. - это служебные закладки, которые создает не пользователь, а размножает сама программа.
Замечательно. Спасибо за ответ.

А кто вам сказал, что закладка может быть только одна?
Создайте закладки MultiRow2, MultiRow3 и т.д., и проверьте, — всё будет работать.
(в статье на втором скриншоте показано и написано про 2 закладки, - для увеличения скриншота, щелкните по нему мышом)

PS: На всякий случай, дополнил статью текстовым описанием, чтобы было понятнее.