Рабочий лист в Excel для вывода данных объектов диапазона в виде файла PDF, я хочу, чтобы каждый диапазон был сохранен как отдельная страница pdf?

#excel #vba #pdf

Вопрос:

Я хотел бы создать PDF-файл из нескольких диапазонов на разных страницах.

Например:

1-я страница PDF содержит первые 5 столбцов активного листа и столбцы из 6-10. Итак, диапазон A1:E10 amp;amp; F1:J10

2-я страница PDF содержит первые 5 столбцов активного листа и 10-15 столбцов. Итак, диапазон от A1:E10 amp;amp; K1:O10

3-я страница имеет диапазон от A1:E10 amp;amp; P1:T10

И так далее.. код

 Private Sub cmdPrintJul_Click()
  Dim ws1 As Worksheet, ws2 As Worksheet

  Set ws1 = Worksheets("YTD")
  ws1.PageSetup.PrintArea = "A1:K48"
  Set ws2 = Worksheets("July")
  ws2.PageSetup.PrintArea = "A1:G45"

  Worksheets(Array(ws1.Name, ws2.Name)).Select
  ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:="e:savedJuly2016.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True

  ws1.Activate
  Range("A1").Select
End Sub
 

Если это происходит на нескольких листах, мне это нужно на одном листе, но объедините несколько диапазонов вместе. Настройка страниц, вероятно, будет выполнена с помощью pageSize, выбрав ту, на которой страница разбивает каждый объединенный диапазон на свою собственную страницу.

Я пытался с:

 Dim ws1 As Worksheet, ws2 As Worksheet

Set ws1 = Worksheets("Celo leto 2019")
ws1.PageSetup.printArea = "B2:K39"
Set ws2 = Worksheets("Celo leto 2019")
ws2.PageSetup.printArea = "AQ2:BS39"

Worksheets(Array(ws1.Name, ws2.Name)).Select
ActiveSheet.ExportAsFixedFormat _
  Type:=xlTypePDF, _
  Filename:=strPathFile, _
  Quality:=xlQualityStandard, _
  IncludeDocProperties:=True, _
  IgnorePrintAreas:=False, _
  OpenAfterPublish:=True

ws1.Activate
Range("A1").Select
 

Но он экспортирует только диапазон ws2..

Ответ №1:

во втором примере показано, что вы пытаетесь напечатать столбцы заголовков с одного и того же листа. Я предполагаю, что вы хотите, чтобы столбцы от b до k повторялись на каждой странице. (пример один, похоже, состоит из двух листов) попробуйте добавить заголовки столбцов

 Dim ws1 As Worksheet

Set ws1 = Worksheets("Celo leto 2019")
With ws1
.PageSetup.PrintTitleColumns = "$b:$k"
.PageSetup.PrintArea = "$aq2:$bs39"
.ExportAsFixedFormat _
  Type:=xlTypePDF, _
  Filename:=strPathFile, _
  Quality:=xlQualityStandard, _
  IncludeDocProperties:=True, _
  IgnorePrintAreas:=False, _
  OpenAfterPublish:=True

End With

ws1.Activate
Range("A1").Select