mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!
Статья является инструкцией по надстройке FillDocuments

Подстановка таблиц Excel в шаблоны Word

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

 

Что для этого нужно:

 

1. Включаем в настройках программы опцию вставки таблиц:

 

2. В исходной таблице Excel создаем столбец, где у нас будут храниться ссылки на вставляемые таблицы (столбец может называться как угодно),
выделяем ячейку в этом столбце (в строке с данными),
и нажимаем комбинацию клавиш Ctrl + Shift + T для вызова диалогового окна выбора таблицы:

диалоговое окно выбора вставляемой в шаблон Word таблицы

 

3. Из выпадающего списка выбираем имя листа, содержащего таблицу
(предварительно, можно выбрать другой файл, - если вставляемая таблица расположена во внешнем файле),
выбираем диапазон ячеек, и один из 4 доступных режимов вставки таблицы Excel в Word:

выбор диапазона ячеек таблицы, для вставки в шаблон Word

 

4. В выделенную ячейку исходной таблицы будет вставлена запись примерно такого вида:

<ExcelTable>/платежи/график/Excel

По этой записи надстройка FillDocuments понимает, что в шаблон Word, на место метки {Вставляемая таблица},
надо вставлять не текст ячейки, а таблицу, параметры вставки которой сохранены в этой ячейке.

 

Что обозначают параметры (разделенные слешем):

<ExcelTable> - это метка, которая говорит надстройке, что надо вставлять таблицу, а не текст ячейки

платежи - имя листа, с которого будет взята таблица

график - адрес или имя диапазона ячеек, который будет скопирован в шаблон Word

Excel - название режима вставки

 

Поэкспериментировав с выбором различных диапазонов и режимов, вы можете получить другие варианты метки, например:

<ExcelTable>34.xlsm/Спецификация/A2:F3/Word

Эта метка означает, что таблица будет скопирована из файла 34.xlsm, расположенного в папке Таблицы
(папка должна иметь именно такое название - Таблицы, и располагаться там же, где находится файл надстройки FillDocuments),
копироваться будет диапазон ячеек с A2 по F3, и при вставке будет выбран режим «использовать форматирование Word»


 

Что же делать, если количество строк во вставляемой таблице меняется, и задать фиксированный диапазон таблицы не получится?

Есть 2 варианта решения проблемы:

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

Обратите внимание - кнопка выбора диапазона становится недоступной, а в поле адреса высвечивается,
какой диапазон ячеек Excel считает заполненным на этом листе.

В диапазон могут попасть «пустые» строки или столбцы, - на самом деле, для Excel они не совсем пустые,
а, например, содержат какое-то форматирование или формулы.

Потому, чтобы этот способ корректно работал, необходимо выделить целиком лишние («пустые») строки и столбцы,
и нажать в меню Excel «Очистить - Очистить всё»

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

 

Способ 2: сделать динамическую таблицу

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

Во вложении к статье - пример такой таблицы.

В первой строке таблицы прописаны формулы, и протянуты (с запасом) на 200 строк вниз
(т.е. во всех строках - одни и те же формулы)

Рамки ячеек в заполненных строках выполнены при помощи условного форматирования
(назначено правило для 5 столбцов - рисуем рамки, если ячейка в первом столбце непустая)

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

Имени график назначена формула =СМЕЩ(платежи!$A$1;0;0;платежи!$H$5+2;5)

 

 

 

ВложениеРазмерЗагрузкиПоследняя загрузка
DynamicTable.xls64 КБ13 года 32 недели назад

Комментарии

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

Добрый день! Все понятно что из екселя в ворд вставляет а как с екселя в ексель вставлять ?

Лист содержит формулы, которые используют имена для выведения чисел прописью(тыс={0;"тысячz":1;"тысячаz":2;"тысячиz":5;"тысячz"} и т.п.). На этапе выделения диапазона таблицы для вставки в договор, диапазон(B9:I12) автоматически переименовывается в "тыс". Почему?

УРА!!! Разобрался! Для того, чтобы таблицы вставлялись, надо в Excel присвоить имя диапазону таблицы.
Разработчику - ОГРОМНОЕ СПАСИБО и РЕСПЕКТ!!!

Здравствуйте, Анатолий
Ограничений никаких нет, - бывает, что либо настроено что-то не так, либо Office глючит, либо внешние программы портят содержимое буфера обмена.
В большинстве случаев всё работает сразу, но иногда поколдовать немного приходится.

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

Проблема как у Дениса - Word не вставляются таблицы Excel.
Office 2010.
Может, есть какие-либо ограничения, не описанные в справке?

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

Здравствуйте, Денис

Убедитесь, что используете последнюю версию программы
(при использовании Office 2013 эта функция раньше не работала, изменения в программу внес несколько дней назад)
Если вы скачали программу больше 4 дней назад, - скачайте свежую версию, и замените имеющийся у вас файл надстройки при закрытом Excel)

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

Здравствуйте!
Помогите разобраться с подстановкой таблиц в Word. Ваши подсказки все проштудированы. Возможно уже кто то спрашивал, но я так и не нашол в комментариях эту тему.
В исходной таблице комбинацией клавиш устанавливаю ссылку на файл с таблицей с режимом вставки Picture. Но на выходе, в документе, так и остается метка {Вставляемая таблица}. Пробую с разными режимами вставки, но все бестолку(((

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
   ___                    _       ____    _  _   
/ _ \ __ _ __ _ | |__ / ___| | || |
| (_) | / _` | / _` | | '_ \ \___ \ | || |_
\__, | | (_| | | (_| | | |_) | ___) | |__ _|
/_/ \__,_| \__,_| |_.__/ |____/ |_|
Введите код, изображенный в стиле ASCII-арт.