Подтвердить что ты не робот

Сохранение нескольких листов в .pdf

У меня есть таблица отчетов, которая захватывает некоторые данные из базы данных и формирует три листа сводной информации отчета. Я хочу автоматически запускать электронную таблицу из командной строки и автоматически сохранять все три таблицы отчетов в виде PDF файлов.

Сначала мне показалось, что у меня может быть макрос VBA на листе сделать это серией "print as PDF", но для этого требуется диалоговое диалоговое окно посредника, чтобы указать имя выходного файла. Затем я обнаружил, что могу просто сохранить как PDF, а макрос может установить имя выходного файла. Однако это создает три отдельных файла, и я должен затем потом собрать их вместе, чтобы объединить их.

(Нечетно, что сохранить только как PDF сохраняет только один лист, где другие режимы сохранения, похоже, сохраняют всю книгу.)

Да, есть инструменты для слияния трех файлов позже, но я хочу знать, есть ли какой-нибудь простой способ заставить Excel сохранить несколько листов вместе как один файл PDF.

Теперь я печатаю серию таких вещей, как:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...

Могу ли я вместо этого сделать что-то вроде (псевдокода):

ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ...
4b9b3361

Ответ 1

Начните с выбора листов, которые хотите объединить:

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _
     IgnorePrintAreas:=False, OpenAfterPublish:=True

Ответ 2

Как и в ответе Тима - но с проверкой на 2007 год (где экспорт по умолчанию не установлен по умолчанию):

Public Sub subCreatePDF()

    If Not IsPDFLibraryInstalled Then
        'Better show this as a userform with a proper link:
        MsgBox "Please install the Addin to export to PDF. You can find it at http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041". 
        Exit Sub
    End If

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ActiveWorkbook.Path & Application.PathSeparator & _
        ActiveSheet.Name & " für " & Range("SelectedName").Value & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Private Function IsPDFLibraryInstalled() As Boolean
'Credits go to Ron DeBruin (http://www.rondebruin.nl/pdf.htm)
    IsPDFLibraryInstalled = _
        (Dir(Environ("commonprogramfiles") & _
        "\Microsoft Shared\OFFICE" & _
        Format(Val(Application.Version), "00") & _
        "\EXP_PDF.DLL") <> "")
End Function

Ответ 3

Я рекомендую добавить следующую строку после экспорта в PDF:

ThisWorkbook.Sheets("Sheet1").Select

(где, например, Sheet1 - это единственный лист, который вы хотите активировать впоследствии)

Выход из нескольких листов в выбранном состоянии может вызвать проблемы с выполнением некоторого кода. (например, unprotect не работает должным образом при активном выборе нескольких листов.)

Ответ 4

В Excel 2013 просто выберите несколько листов и сделайте "Сохранить как" и выберите PDF в качестве типа файла. Несколько страниц откроются в PDF, когда вы нажмете "Сохранить".