Как собрать данные из нескольких листов Calc в шаблон документа и сохранить

Автор ivamartynov, 23 ноября 2016, 11:18

0 Пользователи и 1 гость просматривают эту тему.

ivamartynov

Приветствую товарищи.

Помогите пожалуйста решить:
Есть шаблон документа (Writer)
Есть таблица (Calc) в ней два листа (таблица1 - содержит номера и таблица2 - содержит данные по номерам)

Необходимо собрать данные в шаблон из этих двух листов в шаблон и сохранить файлом в формате *.doc или *.pdf с именем "номер" т.е. сколько номеров в таблице1 столько файлов.

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


economist

Генерация серии документов Writer из Calc решается встроенным во Writer механизмом "Рассылка писем", который недурно расписан в справке. В качестве "Источника адресов" и текста можно использовать таблицу1, ведь значения в виде сумм по таблице2 можно посчитать на таблице1 формулой вида  =SUMIF()

Можно, конечно, написать и макрос, но лучше велик не изобретать.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

"все выбранные строки из таблицы2 по "номеру" из таблицы1" - это таблица3.

Уважаемый Семен (Таблица1) 

Вы пользовались нашим звездолетом
01/10/16 - 2 часа (Таблица2, строка 5)   
16/11/16 - 4 часа (Таблица2, строка 8) итд - это можно собрать в отдельное поле в Таблице3 Calc


Что касается сохранений с именами - тут да, Рассылка только дописывает ..._0, ..._1 итд.

В таком случае возникает резонный вопрос: причем здесь Writer? Только из-за пришлого ott?

Почему бы не сделать "шаблон" документа прямо в Calc, макросом перебрать значения таблицы 1 (а значения из 2 будут автовычисляться формулами вида =VLOOKUP()) - и из него же экспортировать в PDF, которому можно вставить значение в кач-ве имени файла?
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Макрос перебора строк может выглядеть так:

Option VBASupport 1
Option Compatible

Sub SaveAsPDFFromTable
For each n in [A1:A10]
filenamePDF=n.value
' здесь вставьте модуль сохранения в PDF
Next n


Упс, только сейчас смог открыть вложенные файлы из первого сообщения (пров выделывается). Решал бы подобную задачу целиком в Base или наоборот - полностью вне OpenOffice и LibreOffice. Файлы ведь наверняка еще нужно разослать, напечатать адреса на конвертах итп? 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Раз не знаете - значит мало думали. У любой задачи есть простое решение.
Посмотрите на таблицу2 (назовем ее Проводки, а таблица 1 - это Клиенты)
У одного клиента может быть несколько Проводок, и именно это вас смутило по Рассылке -
она может отправлять только одну строку из одной и той же таблицы. Пойдем другим путем.

Сделаем бланк письма прямо в Таблице Проводки, а строки, относящиеся к клиенту - будем просто отображать Автофильтром. Если Клиентов 10 и даже 30 - быстрее это делать раз месяц руками, чем писать макрос.
Но макрос позволит легко пробегать даже большой список клиентов, меняя фильтр и сохраняя нужный PDF.

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...