Страницы: 1
RSS
Сохранить определенные листы в один документ в формате PDF
 
Уважаемые ребята, добрый день!  
Вынужден обратиться за помощью, поиск полноценного ответа на мой вопрос не дал.  
Прошу помощи ...  
Есть книга из которой необходимо средствами VBA сохранить несколько листов (Лист1, Лист2, Лист3) в один документ формата PDF. На каждом из этих листов есть "область печати" которая меня и интересует.  
Листы "XXXX" и "YYYYY" копироваться с другими листами НЕ должны.  
До сегодняшнего дня я сохранял нужные листы в отдельные файлы PDF (через сохранить как), а затем их объединял в один файл программой "Адоб Акробат".  
Возможно ли реализовать мой замысел ?? Если да, то прошу помочь мне с этим !!
 
слить три листа в один --рабочий, добавив заголовки м видимо --шапки  
его уже распечатывать
 
А в чем собственно проблема, что в конечном итоге вам нужно непонятно. Чем вас печать на виртуальный принтер AdobePDF не устраивает? Зачем сохранять в отдельные файлы, если в итоге потом сливаете в один. Нужно средствами VBA ну так и включите макрорекордер и запишите все действия. Или я просто не понял что нужно.
 
Дело в том, что печатать на виртуальный принтер AdobePDF можно только с того компьютера, на котором установлен этот виртуальный принтер. Мне приходится работать на нескольких компьютерах (на работе, дома и др местах), а информация находится на флешке. На всех компах установить виртуальный принтере - это ни к чему.  
Сохраняю я в отдельные файлы потому как сохранить иным образом лист excel в формат PDF не представляю возможным. Если можно иначе, то подскажите как.  
Макрорекодер я использовал при сохранении в PDF, однако мне необходимо сохранить НЕСКОЛЬКО листов книги в один файл PDF. А excel позволяет лишь сохранить каждый лист поотдельности, либо всю книгу целиком.  
Повторюсь, а мне необходимо сохранить НЕСКОЛЬКО листов книги, но не все.
 
Не пробовали коду всместо activesheet дать Array("Лист1", "Лист2", "Лист3")?  
Проверить не могу - нет 2007.
 
Hugo, добрый день!  
К сожалению в таком синтаксисе выпадает в Debug ...
 
извините, поторопился отправить без кода  ...  
 
Sub Макрос2()  
 
   Sheets(Array("Лист1", "Лист2", "Лист3")).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _  
       "D:\Documents and Settings\e.babchinskiy\Desktop\Сохранить в пдф.pdf", Quality _  
       :=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _  
       OpenAfterPublish:=True  
End Sub
 
А жаль. :(
 
не правда. эксель также позволяет сохранить все листы в один PDF файл. По крайней мере у меня все листы в один файл сохраняет.  
При экспорте в PDF т.е. (Сохранить как Adobe PDF) выскакивает окно с выбором листов и все сохраняет в один файл. При печати в Pdf тоже есть выбор, и тоже печатает в один PDF файл.  
Если у вас нет виртуального принтера, то можно просто сохранить как и выбрать формат PDF при этом в окне сохранения файла зайти в параметры и выбрать листы.  
Или еще проще, выделить сразу все листы, которые нужно сохранить т.е. ярлычки листов с клавишей Shift и сохранить как и выбрать PDF.
 
Проверил на 2007.  
Тот редкий (да что там, единственный) случай, когда пока не получилось обойтись без Select  
 
Sub Макрос3()  
Sheets(Array("Лист1", "Лист2", "Лист3")).Select  
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _  
       "C:\Temp\post_323419.pdf", Quality:=xlQualityStandard, IncludeDocProperties _  
       :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False  
End Sub  
 
Но наверняка как-то и тут можно иначе написать...
 
продолжение:  
процедура 5 раз меняет в листе1 данные    
и по ним формируется (формулами) 10 документов на 10 листах.  
Сохранить эти 10 документов в одном PDF проблем нет, но...  
необходим единый файл, содержаший 5 пулов по 10 документов.  
 
Вот такая жевачка для мозгов))
 
уточнаю: в итоге нужен единый фай pdf
 
Скачайте PDFCreator последних версий. Содержит утилиту для объединения pdf в один. Поддерживает ли автоматизацию (или другой способ неручной сшивки) - не знаю. Есть и другие утилиты для объединения pdf в один файл. Поищите.
 
Посмотрел сейчас код формы для Excel, прилагаемой в папке примеров PDFCreator - можете легко его модифицировать, вставив вызов вашей процедуры, для печати в единый pdf.
 
у меня возникла необходимость сшить несколько файлов pdf в один  
т.к. макрос изменяет в нескольких листах данные (готовит документы)  
и все варианты (по 5-10 листов) сохраняет в pdf    
а в итоге нужно получить один файл.  
решил так:  
скачал программу pdftk (гуглится просто)  
1. все pdf-ки макрос ложит в папку с pdftk (путь к ней C:\pdftk\pdftk.exe)  
2. запускаю ее bat-файл со скриптом:  pdftk *.pdf cat output 9999.pdf  
все .pdf сшиваются в один 9999.pdf  
3. далее макрос копирует итоговый pdf куда мне надо  
4. и очищает папку от уже ненужных pdf  
 
1. ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\pdftk\" & m & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties _  
:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False  
 
2. Shell "cmd /c cd C:\pdftk\ & C:\pdftk\0000.bat", vbNormalFocus 'запуск bat  
  Application.Wait Now() + TimeSerial(0, 0, 10)'задержка - ждем вып-я pdftk  
 
3. FileCopy "C:\pdftk\9999.pdf", "C:\Users\SERGE\Desktop\МОЭСК\не_наши\" & R & "\" & R & ".pdf"  
 
4. Kill ("C:\pdftk\*.pdf")  
 
- все способы решения нашел на этом сайте и изменил под себя  
- сколько ни искал работающих процедур запуска exe не нашел, да и с запуском bat тоже были проблемы: bat работает только если в пути-имени файлов нет пробелов и русских букв  
 
всем удачи, ну и конечно всем гуру этого сайта отельное спасибо за помощь)
Страницы: 1
Наверх