Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2012, 17:35   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Печать нескольких листов в один pdf

Передо мной стоит задача: есть книгу с n количеством листов, нужно распечатать любое количество листов в произвольном порядке в один pdf. В качестве виртуального принтера стоят: doPDF v7, FreePDF.

Пытаюсь решить задачу через вариацию строки "ActiveSheet.PrintOut ActivePrinter:=ПринтерPDF". Но получается так что каждый лист печататься отдельно (в свой файл).

Как можно решать задачу?

Сразу вопросы по теме:
1. В каком формате печатает Excel, если установить PrintToFile=True?
2. Как программно задать имя и путь файла при печати на виртуальный принтер?
3. Может нужно выбрать иной виртуальный принтер? Какой лучше?
4. Может стоит разделить задачу на две: 1) печатаем каждый лист в отдельный pdf. 2) Объединяем все pdf в один. Возникает вопрос: как можно объединить несколько pdf в один?

Отмечу что стоит excel 2003. Как я понял в 2007 и позже можно воспользоваться командой: ExportAsFixedFormat. Можно ли подгрузить её в 2003 через dll?
С уважением, Алексей.

Последний раз редактировалось tae1980; 25.02.2012 в 18:54.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 17:51   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

4.
http://www.pdflabs.com/

Merge Two or More PDFs into a New Document
pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
or (Using Handles):
pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
or (Using Wildcards):
pdftk *.pdf cat output combined.pdf
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2012, 18:18   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Экспериментально нашел вариант печати:
Код:
    Sheets(Array("Исх.данные объекта", "Исх.данные договора", "Исх.данные МежПлана")).Select
    ActiveWindow.SelectedSheets.PrintOut ActivePrinter:=ПринтерPDF
Вроде бы все выделенные листы должны выводить одновременно. Но получается так что первые два выводятся в один pdf, третий лист выводиться в отдельный файл. Скорее всего из-за того что два первых листа идут подряд, а третий отделен от них листом. Решение почти идеальное.
Как можно обойти проблему необходимости размещать листы подряд?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 18:23   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
И это все в Excel? ) Очень, очень интересно, в том числе и вращение страниц. Спасибо, буду изучать.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 18:35   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Прошу прощение за свое невежество, но как эту библиотеку подключить в excel?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 18:44   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Это не в Экселе - но работает из командной строки. Следовательно, можно взять сохранённые файлы (если известно, куда они сохранены) и собрать в один этим же макросом, который отправляет на печать.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2012, 18:52   #7
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Это не в Экселе - но работает из командной строки. Следовательно, можно взять сохранённые файлы (если известно, куда они сохранены) и собрать в один этим же макросом, который отправляет на печать.
Понятно. Хорошее решение.
Теперь осталось научиться задавать имена pdf при печати. Пока это не удалось сделать, виртуальный принтер упорно запрашивает имя файла у пользователя.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 18:57   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну там ведь есть возможность
pdftk *.pdf cat output combined.pdf
Т.е. просто нужно иметь изначально пустой каталог, куда сохранять.
Можно его создать этим же кодом например с именем из даты-времени, туда распечатать, собрать в один файл, мусор (каталог) удалить.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.02.2012, 19:09   #9
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

FreePDF установил на комп Ghostscript. Кто нибудь работал с этим?
Может проще напрямую работать, а не через FreePDF?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 25.02.2012, 19:15   #10
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Ну там ведь есть возможность
pdftk *.pdf cat output combined.pdf
Т.е. просто нужно иметь изначально пустой каталог, куда сохранять.
Можно его создать этим же кодом например с именем из даты-времени, туда распечатать, собрать в один файл, мусор (каталог) удалить.
Сейчас у меня уходит 20 минут на создание всех таблиц и 40 минут на их распечатку. Создается сразу много листов, пока все переберешь... Вот встала задача автоматизировать этот процесс.
Ни как не удается передать в виртуальный принтер имя файла для вывода, он всегда запрашивает пользователя. Можно конечно заставить себя n количество раз выбрать один и тот же каталог, а потом все слить в один pdf. Но согласись это плохое решение.
Решение должно быть простое, но оно ни как не дается. :(
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PDF двухсторонняя печать VladimirVB Microsoft Office Word 3 23.11.2010 12:23
печать листов excel ара Помощь студентам 10 07.04.2010 10:12
печать на PDF принтере Frost.sapr Мультимедиа в Delphi 1 12.10.2008 23:17
печать нескольких листов checkbox Microsoft Office Excel 2 16.01.2008 00:50