2

У меня есть книга Excel, в которой конечный пользователь делает некоторый выбор, на основании которого листы, которые необходимо сохранить в виде одного PDF-файла, заносятся в лист 1, ячейка B10, например, (E1, E2, E3, E4 ...)

Теперь я попробовал этот макрос ниже, но он не работает должным образом, причины приведены ниже кода:

Sub pdff()

   Sheets("E1").Activate
   ActiveSheet.UsedRange.Select
   Sheets("E2").Activate
   ActiveSheet.UsedRange.Select
   Sheets("E3").Activate
   ActiveSheet.UsedRange.Select

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

Проблемы с кодом:

  • После выполнения кода он группирует листы, которые необходимо разгруппировать вручную.
  • Код сохраняет области за пределами заданной области печати (чего не происходит, если я сохраняю каждый лист вручную в формате PDF)
  • Код не динамический, он не забирает имена листов из ячейки B10

1 ответ1

1

С:

Эта версия будет соответствовать всем вашим целям:

Sub pdff()
    Dim s As String, ary, a, sh As Worksheet

    Set sh = ActiveSheet
    s = Sheets("Sheet1").Range("B10").Text
    ary = Split(s, ",")

    For Each a In ary
        Sheets(a).Select
        Sheets(a).Activate
        Sheets(a).Range(ActiveSheet.PageSetup.PrintArea).Select
    Next a

    ThisWorkbook.Sheets(ary).Select

    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Damon\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True

    sh.Select
End Sub

Просто убедитесь, что у вас есть Sheet1, а также листы E1 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .