В этом руководстве будет показано, как сохранить / распечатать в формате PDF в Excel VBA.
Распечатать в PDF
Эта простая процедура распечатает ActiveSheet в PDF.
123456 | Sub SimplePrintToPDF ()ActiveSheet.ExportAsFixedFormat Тип: = xlTypePDF, Имя файла: = "demo.pdf", Качество: = xlQualityStandard, _IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueКонец подписки |
Я также создал функцию с обработкой ошибок и т. Д., Которая распечатает ActiveSheet в PDF:
12345678910111213141516171819202122232425262728293031323334353637383940 | Sub PrintPDF ()Вызов Save_PDFКонец подпискиФункция Save_PDF () As Boolean 'Копирует листы в новый файл PDF для отправки по электронной почтеУменьшить размер Thissheet как строку, ThisFile как строку, PathName как строкуРазмыть SVA как строкуApplication.ScreenUpdating = False'Получить имя для сохранения файлаThissheet = ActiveSheet.NameThisFile = ActiveWorkbook.NamePathName = ActiveWorkbook.PathSvAs = PathName & "\" & Thissheet & ".pdf"'Установить качество печатиПри ошибке Возобновить ДалееActiveSheet.PageSetup.PrintQuality = 600Err.ClearПри ошибке GoTo 0'Сообщите пользователю, как отправлятьПри ошибке Перейти к RefLibErrorActiveSheet.ExportAsFixedFormat Тип: = xlTypePDF, Имя файла: = SvAs, Качество: = xlQualityStandard, IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueПри ошибке GoTo 0SaveOnly:MsgBox «Копия этого листа успешно сохранена как файл .pdf:» & Chr (13) & Chr (13) & SvAs & _«Просмотрите документ .pdf. Если документ выглядит НЕхорошо, настройте параметры печати и повторите попытку».Save_PDF = TrueGoTo EndMacroRefLibError:MsgBox «Невозможно сохранить в формате PDF. Справочная библиотека не найдена».Save_PDF = ЛожьEndMacro:Конечная функция |
Функция возвращает ИСТИНА или ЛОЖЬ, если печать в PDF была успешной или нет.
Функция сохранения и отправки PDF по электронной почте
Эта функция сохранит ActiveSheet в виде PDF-файла и (необязательно) прикрепит PDF-файл к электронному письму (при условии, что у вас установлен Outlook):
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | Sub Test_Save_PDF ()Вызов Send_PDF ("SendEmail")Конец подпискиФункция Send_PDF (необязательное действие As String = "SaveOnly") As Boolean 'Копирует листы в новый файл PDF для отправки по электронной почте.Уменьшить размер Thissheet как строку, ThisFile как строку, PathName как строкуРазмыть SVA как строкуApplication.ScreenUpdating = False'Получить имя для сохранения файлаThissheet = ActiveSheet.NameThisFile = ActiveWorkbook.NamePathName = ActiveWorkbook.PathSvAs = PathName & "\" & Thissheet & ".pdf"'Установить качество печатиПри ошибке Возобновить ДалееActiveSheet.PageSetup.PrintQuality = 600Err.ClearПри ошибке GoTo 0'Сообщите пользователю, как отправлятьПри ошибке Перейти к RefLibErrorActiveSheet.ExportAsFixedFormat Тип: = xlTypePDF, Имя файла: = SvAs, Качество: = xlQualityStandard, IncludeDocProperties: = False, IgnorePrintAreas: = False, OpenAfterPublish: = TrueПри ошибке GoTo 0'Отправить электронное письмоЕсли action = "SendEmail" ТогдаПри ошибке GoTo SaveOnlyApplication.Dialogs (xlDialogSendMail). ПоказатьПри ошибке GoTo 0GoTo EndMacroКонец, еслиSaveOnly:MsgBox «Копия этого листа успешно сохранена как файл .pdf:» & Chr (13) & Chr (13) & SvAs & _«Просмотрите документ .pdf. Если документ выглядит НЕхорошо, настройте параметры печати и повторите попытку».Send_PDF = ИстинаGoTo EndMacroRefLibError:MsgBox «Невозможно сохранить в формате PDF. Справочная библиотека не найдена».Send_PDF = ЛожьEndMacro:Конечная функция |