Экспорт в PDF макросом. С изменением данных на листах

Автор luu, 1 августа 2023, 13:19

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

luu

Добрый день. Прошу помощи с написанием макроса.
Дано:
Есть книга с разными листами. На листах заранее подготовленные формы для печати (вывода в PDF) с изменяемыми значениями в разных ячейках, с заранее определенным форматированием и определенными диапазонами печати.
На каждом листе (форме) заполняются нужные значения и лист отправляется на печать. Таких форм (значений в них) много и вручную это превращается в довольно рутинную работу.

Цель:
На отдельном листе сформировать вручную реестр необходимых значений для каждого листа и макросом пройтись по этому реестру, подставляя на нужный лист необходимые значения и выгружая его в PDF. Таким образом, получить набор готовых к печати PDF-файлов, которые одним действием отправлять на печать.
Или даже, в идеале, собирать в один единый PDF

Лист   ФИО   Задание
Лист 1   Иванов И.И.   купить
Лист 2   Петров П.П.   продать
Лист 3   Иванов И.И.   подготовить документ
Лист 2   Сидоров С.С.   напечатать
Лист 3   Петров П.П.   купить
Лист 1   Иванов И.И.   подготовить документ
Лист 1   Петров П.П.   купить
Лист 1   Иванов И.И.   купить
Лист 2   Сидоров С.С.   напечатать
Лист 1   Петров П.П.   продать
Лист 3   Сидоров С.С.   подготовить документ

Т.е. сначала на Лист 1 перенести значения "Иванов И.И." и "купить", выгрузить его в PDF, затем на Лист 2 выгрузить значения "Петров П.П." и "продать" и т.д., выгрузить его в pdf и так далее

Можно ли и как это реализовать?

mikekaganski

Это не требует макроса. Специально для этого есть функция Mail Merge. Вы готовите Ваш шаблон и базу данных (в качестве которой можете использовать лист Calc и даже таблицу в документе Writer). Поля баз данных в Вашем шаблоне автоматически заполняются, и генерируются PDF (или файлы Writer, или листы на принтере, или email) для каждой записи. Или единый документ для всего.
С уважением,
Михаил Каганский

sokol92

... Если же всё необходимо выполнить в Calc, то давайте распределим работу: Вы готовите файл - пример и описываете, в какие именно ячейки заносить параметры.
А мы отвечаем на вопрос, заданный в теме.  :)
Владимир.

luu

Цитата: sokol92 от  1 августа 2023, 13:47... Если же всё необходимо выполнить в Calc, то давайте распределим работу: Вы готовите файл - пример и описываете, в какие именно ячейки заносить параметры.
А мы отвечаем на вопрос, заданный в теме.  :)
Подготовил файл-пример и результаты в pdf, но не могу понять, как прикрепить к сообщению. В прошломинтерфейсе делалось как-то, а тут не найти )


luu

#4
Вот пример с результатом (только три файла удалось прикрепить).
Т.е. на каждом листе (форме) вручную вношу значения из реестра и делаю экспорт в пдф
Должно получиться 11 пдф-файлов

sokol92

Спасибо!
Можно всё собрать в новом документе Calc, а затем вывести в общий файл pdf.
Чтобы макрос был универсальным, можно в целевых листах (Лист1 - Лист3) создать имена уровня листа "ФИО", "Задание" для ячеек, в которые будут заноситься параметры.
Сейчас что-нибудь придумаем...
Владимир.

luu

#6
Цитата: sokol92 от  1 августа 2023, 14:34Спасибо!
Можно всё собрать в новом документе Calc, а затем вывести в общий файл pdf.
Чтобы макрос был универсальным, можно в целевых листах (Лист1 - Лист3) создать имена уровня листа "ФИО", "Задание" для ячеек, в которые будут заноситься параметры.
Сейчас что-нибудь придумаем...
Спасибо большое за участие!
Только вот собирать все в новый документ не очень хочется. Это в примере максимально просто показал, чтобы принцип действий понять, потом докрутить самому. В реальном файле формы достаточно большие, со сложным форматированием, многостраничные и со множеством изменяемых значений. Поэтому и хотелось бы делать экспорт pdf с существующих листов, просто меняя значения, подставляя их из листа "Реестр". Листы имеют помимо разного форматирования, еще и разные стили страниц (показал это в примере)

sokol92

Цитата: luu от  1 августа 2023, 13:19Или даже, в идеале, собирать в один единый PDF
Цитата: luu от  1 августа 2023, 14:39Только вот собирать все в новый документ не очень хочется.

Какому высказыванию верим?
Владимир.

luu

Цитата: sokol92 от  1 августа 2023, 15:55
Цитата: luu от  1 августа 2023, 13:19Или даже, в идеале, собирать в один единый PDF
Цитата: luu от  1 августа 2023, 14:39Только вот собирать все в новый документ не очень хочется.

Какому высказыванию верим?

Собирать все в единый новый ods не надо. А вот получившиеся много pdf можно собрать в один, но это опционально, не критично.
Чтобы не путаться, давайте оставим в требуемом решении задачи отдельные pdf, как в примере результата

sokol92

Владимир.

sokol92

#10
Проверяйте. Стартовый макрос - ExportPdf.
Владимир.

bigor

Я из объяснений понял, что в пдф нужно выводить только один лист, на котором было произведено действие
Поддержать наш форум можно здесь

sokol92

#12
Цитата: luu от  1 августа 2023, 14:19Должно получиться 11 пдф-файлов

Управление выводом производится на листе Реестр.
Первый столбец - имя листа - шаблона для pdf. Начиная со второго столбца - имена ячеек на столбце - шаблоне (первая строка) и значения для этих ячеек.
Владимир.

bigor

Цитата: luu от  1 августа 2023, 13:19сначала на Лист 1 перенести значения "Иванов И.И." и "купить", выгрузить его в PDF
:) файлов тоже получится 11, но по 1 листу, у вас сейчас по 3.
Поддержать наш форум можно здесь

sokol92

Цитата: bigor от  1 августа 2023, 19:25у вас сейчас по 3
Точно - сейчас уговорим фильтр и поправим.
Спасибо за замечание!
Владимир.