Excel VBA для экспорта выбранных листов в PDF

Я использую следующий код для экспорта выбранных листов из Excel 2010 в один файл PDF...

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

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

Моя проблема в том, что она экспортирует только первый лист. Любые идеи?

Ответ 1

Как только вы выберете группу листов, вы можете использовать Выбор

Рассмотрим:

Sub luxation()
    ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    Selection.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="C:\TestFolder\temp.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

EDIT # 1:

Дальнейшее тестирование показало, что этот метод зависит от группы ячеек выбранных на каждом листе. Чтобы получить исчерпывающий вывод, используйте что-то вроде:

Sub Macro1()

   Sheets("Sheet1").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet2").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet3").Activate
   ActiveSheet.UsedRange.Select

   ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      "C:\Users\James\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      True
End Sub

Ответ 2

Я довольно замешана в этом. Я также запускаю Excel 2010. Я попытался сохранить два листа как один PDF, используя:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **Selection**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

но я получил только пустые страницы. Он сохранил оба листа, но ничего на них. Это было только до тех пор, пока я не использовал:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **ActiveSheet**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

что у меня есть один файл PDF с обоими листами.

Я попытался вручную сохранить эти две страницы, используя "Выбор" в диалоговом окне "Параметры", чтобы сохранить два листа, которые я выбрал, но получил пустые страницы. Когда я попробовал опцию "Активные листы", я получил то, что хотел. Когда я записал это как макрос, Excel использовал ActiveSheet, когда он успешно опубликовал PDF. Что дает?

Ответ 3

вот что я придумал, поскольку у меня возникли проблемы с ответом @asp8811 (возможно, мои собственные трудности)

'это сделает первые 2 листа в pdf   "Обратите внимание, что каждый ws должен контролироваться разрывами страниц для печати, что немного сложно   'это явно помещает pdf в текущий каталог

Sub luxation2()
    Dim Filename As String
    Filename = "temp201"



Dim shtAry()
ReDim shtAry(1) ' this is an array of length 2
For i = 1 To 2
shtAry(i - 1) = Sheets(i).Name
Debug.Print Sheets(i).Name
Next i
Sheets(shtAry).Select
Debug.Print ThisWorkbook.Path & "\"


    ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "/" & Filename & ".pdf", , , False

End Sub