Excel VBA Сохранить несколько листов из диапазона в один PDF - PullRequest
1 голос
/ 27 февраля 2020

В настоящее время я работаю над рабочей книгой, где в столбце A: A рабочей таблицы («STAM-Filialen») указаны почти все названия других рабочих таблиц. Мне нужны только те листы, которые названы в столбце («A: A») в одном PDF. Код, который я использую, делает его отдельным файлом для каждого листа. Можно ли использовать такой же код, чтобы сохранить его как один PDF?

Dim myCell As Range
Dim lastCell As Long
Dim PathName As String
lastCell = lastRow("STAM-Filialen")
PathName = Range("I10").Value

Worksheets("STAM-Filialen").Activate
For Each myCell In ThisWorkbook.Worksheets("STAM-Filialen").Range("A2:A" & lastCell).Cells
    Dim wksName As String
    wksName = myCell.Text
    ThisWorkbook.Worksheets(wksName).Range("A1:P60").ExportAsFixedFormat Type:=xlTypePDF, Filename:=PathName & "DispoPlan.Filiaal " & wksName & ".PDF"
Next

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Я бы порекомендовал переместить все значения на один лист для печати. После этого удалите этот временный лист.

Вот пример размещения каждого диапазона рядом с каждым листом на новом листе.

Option Explicit

Public Sub CreateSinglePDF()
    Dim ws As Range: Set ws = ThisWorkbook.Sheets(1).Range("A1:A4")
    Dim rangeDict As Object: Set rangeDict = CreateObject("Scripting.Dictionary")
    Dim cell As Range

    For Each cell In ws
        If Not rangeDict.exists(cell.Value) And cell.Value <> "" Then
            rangeDict.Add cell.Value, ThisWorkbook.Sheets(cell.Value).Range("A1:A5")
        End If
    Next

    Dim printsheet As Worksheet
    Set printsheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))

    Dim key As Variant
    Dim i As Long: i = 1
    For Each key In rangeDict
        printsheet.Range(printsheet.Cells(1, i), printsheet.Cells(5, i)).Value = rangeDict(key).Value
        i = i + 1
    Next

    printsheet.UsedRange.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\users\ryan\desktop\ExampleFile.pdf"
    printsheet.Delete
End Sub
0 голосов
/ 27 февраля 2020

Чтобы преобразовать несколько листов в один документ PDF,

  1. сначала выберите несколько листов
  2. и используйте оператор Activesheet.ExportAsFixedFormat.
  3. Диапазон печати Страница может быть установлена ​​в Page Setup.

Код

   Sub test()
        Dim WB As Workbook
        Dim Ws As Worksheet
        Dim sht As Worksheet
        Dim PathName As String
        Dim vWs() as String '<~~ Variable change
        Dim rngDB As Range, rng As Range
        Dim n As Integer

        Set WB = ThisWorkbook
        Set Ws = WB.Worksheets("STAM-Filialen")

        PathName = Range("I10").Value

        With Ws
            Set rngDB = .Range("a1", .Range("a" & Rows.Count).End(xlUp))
        End With

        For Each rng In rngDB
            n = n + 1
            ReDim Preserve vWs(1 To n)
            vWs(n) = rng.text '<~~ text
            Set sht = Sheets(rng.Value)
            With sht.PageSetup
                .PrintArea = "a1:p60"
            End With
        Next rng
        Sheets(vWs).Select '<~~ multiple sheets select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=PathName & "DispoPlan.Filiaal.PDF"

    End Sub

Рабочие листы ("STAM-Filialen")

enter image description here

Specipi c Выбранные листы

enter image description here

Отдельный PDF

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...