Сохранение в PDF книги Excel, группы листов, одного листа или отдельного диапазона с помощью кода VBA. Метод ExportAsFixedFormat. Примеры экспорта.
Метод ExportAsFixedFormat
Метод ExportAsFixedFormat сохраняет рабочую книгу Excel или выбранную группу листов этой книги в один PDF-файл. Чтобы экспортировать каждый лист в отдельный файл, необходимо применить метод ExportAsFixedFormat к каждому сохраняемому листу.
Синтаксис
Expression.ExportAsFixedFormat (Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr) |
Expression – это выражение, представляющее объект Workbook, Worksheet или Range.
Параметры
Единственный обязательный параметр – Type, остальные можно не указывать – в этом случае будут применены значения по умолчанию.
Параметр | Описание |
---|---|
Type | Задает формат файла для экспорта книги или листа: xlTypePDF(0) – сохранение в файл PDF; xlTypeXPS(1) – сохранение в файл XPS*. |
FileName | Задает имя файла. При указании полного пути, файл будет сохранен в указанную папку, при указании только имени – в папку по умолчанию (в Excel 2016 – «Документы»). Если имя не задано (по умолчанию), файл будет сохранен с именем экспортируемой книги. |
Quality | Задает качество сохраняемых электронных таблиц: xlQualityMinimum(1) – минимальное качество; xlQualityStandard(0) – стандартное качество (по умолчанию). |
IncludeDocProperties | Включение свойств документа Excel в PDF: True(1) – включить; False(0) – не включать; мне не удалось обнаружить разницу и значение по умолчанию. |
IgnorePrintAreas | Указывает VBA, следует ли игнорировать области печати, заданные на листах файла Excel: True(1) – игнорировать области печати; False(0) – не игнорировать области печати (по умолчанию). |
From** | Задает номер листа книги Excel, с которого начинается экспорт. По умолчанию сохранение в PDF начинается с первого листа книги. |
To** | Задает номер листа книги Excel, на котором заканчивается экспорт. По умолчанию сохранение в PDF заканчивается на последнем листе книги. |
OpenAfterPublish | Указывает VBA на необходимость открыть созданный файл PDF средством просмотра: True(1) – открыть файл PDF для просмотра; False(0) – не открывать файл PDF для просмотра (по умолчанию). |
FixedFormatExtClassPtr | Указатель на класс FixedFormatExt (игнорируем этот параметр). |
* XPS – это редко использующийся фиксированный формат файлов, разработанный Microsoft, который похож на PDF, но основан на языке XML.
** Применимо только к книге (Workbook.ExportAsFixedFormat), при экспорте листа (Worksheet.ExportAsFixedFormat) указание параметров From и/или To приведет к ошибке.
Сохранение в PDF книги Excel
Экспорт всей книги
Sub Primer1() ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=«C:Testfile1.pdf», OpenAfterPublish:=True End Sub |
Если вы указываете путь к файлу, он должен существовать, иначе VBA сохранит файл с именем и в папку по умолчанию («ИмяКниги.pdf» в папку «Документы»).
Экспорт части книги
Этот способ позволяет сохранить в PDF группу листов, расположенных подряд:
Sub Primer2() ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=«C:Testfile2.pdf», _ From:=2, To:=4, OpenAfterPublish:=True End Sub |
Сохранение в PDF рабочих листов
Экспорт одного листа
Sub Primer3() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=«C:Testfile3.pdf», OpenAfterPublish:=True End Sub |
Экспорт диапазона
Sub Primer2() Лист4.Range(«A1:F6»).ExportAsFixedFormat Type:=xlTypePDF, Filename:=«C:Testfile4.pdf», OpenAfterPublish:=True End Sub |
Если экспортируемый диапазон расположен на активном листе, имя листа указывать не обязательно.
Экспорт группы листов
Этот способ удобен тем, что экспортировать в PDF можно листы, расположенные не подряд:
Sub Primer5() Sheets(Array(«Лист2», «Лист3», «Лист5»)).Select Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=«C:Testfile5.pdf», OpenAfterPublish:=True End Sub |
You can use the following syntax in VBA to print the currently active Excel sheet to a PDF:
Sub PrintToPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="my_data.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
This particular macro will print the currently active Excel sheet to a PDF called my_data.pdf and it will be saved in the current folder.
Note #1: You can also include a full file path in the Filename argument to save the PDF to a specific folder.
Note #2: The line OpenAfterPublish:= True tells VBA to open the PDF as soon as it is exported. You can leave out this argument if you don’t want the PDF to be opened after exporting.
Note #3: The only required argument in the ExportAsFixedFormat method is Type, which must be set to xlTypePDF to print the sheet to a PDF format.
The following example shows how to use this macro in practice.
Example: Export Excel Sheet to PDF Using VBA
Suppose we have the following Excel sheet that contains information about various basketball players:
Now suppose that we would like to export this sheet to a PDF called my_data.pdf.
We can create the following macro to do so:
Sub PrintToPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="my_data.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
When we run this macro, the Excel sheet is exported to a PDF and then the PDF is automatically opened:
Note that the exact formatting of the cells with the borders and the fill color is included in the PDF.
Note: You can find the complete documentation for the ExportAsFixedFormat method in VBA here.
Additional Resources
The following tutorials explain how to perform other common tasks in VBA:
VBA: How to Create Folders
VBA: How to Delete Folders
VBA: How to Delete Files
daserdj 0 / 0 / 0 Регистрация: 13.10.2016 Сообщений: 2 |
||||||||
1 |
||||||||
06.11.2016, 16:11. Показов 12320. Ответов 3 Метки нет (Все метки)
Добрый день!
Создается .pdf Файл, но не открывается ни одной из подходящих для чтения pdf программ. Если использовать следующий код:
,
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
07.11.2016, 00:09 |
2 |
daserdj, Офис 2007 и более новые имеют встроенные средства для сохранения в PDF. Запишите макрорекордером команду Файл — Сохранить как — тип файла: PDF, Параметры, опубликовать: выделенные листы, ОК.
1 |
0 / 0 / 0 Регистрация: 13.10.2016 Сообщений: 2 |
|
07.11.2016, 14:24 [ТС] |
3 |
Казанский, спасибо за ответ!
0 |
anton-sf 123 / 59 / 14 Регистрация: 29.03.2015 Сообщений: 265 |
||||||||
08.11.2016, 10:46 |
4 |
|||||||
Из метода, предложенного Казанский, получается макрос, например у меня такой
Из этого макроса видно название PDF принтера — его и надо использовать:
1 |
Формулировка задачи:
Добрый день!
На компьютере установлен пакет программ adobe, и в списке устройств имеется принтер adobe pdf, он установлен как принтер по умолчанию.
Имеется код макроса:
Создается .pdf Файл, но не открывается ни одной из подходящих для чтения pdf программ.
Если использовать следующий код:
,
то появляется диалоговое окно сохранения файла, и при указании пути назначения и имени файла, формируется корректный .pdf-файл.
В чём разница между двумя данными методами, и как обойти проблему формирования битого файла при использовании первого варианта макроса?
Код к задаче: «Печать pdf из excel-листа»
textual
Sub Макрос2() Лист1.PrintOut Copies:=1, ActivePrinter:="Microsoft Print to PDF (Ne02:)", _ PrintToFile:=True, PrToFileName:="D:UsersANTON-SFDesktopTEST.PDF" End Sub
Полезно ли:
8 голосов , оценка 4.000 из 5
Макрос печатать листы в пдф, как сохранять название? |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |