VBA распечатать PDF-файлы для конкретного списка листов - PullRequest
0 голосов
/ 08 мая 2018

Можно ли изменить этот код для печати нескольких файлов PDF для определенного списка листов?

    Sub printselection()
        Dim rng As Range
        Dim wks As Worksheet
        Dim arr() As String
        Dim i As Long: i = 0
        Dim x As Integer

        For x = 1 To 3
        For Each rng In Sheets("Consolidated").Range(Cells(x, x), Cells(x, x))

            If Trim(rng.Value) <> "" Then
                On Error Resume Next
                Set wks = Nothing
                Set wks = Sheets(rng.Value)
                On Error GoTo 0
                If wks Is Nothing Then
                    MsgBox "Sheet " & rng.Value & " does not exist"
                Else
                    ReDim Preserve arr(i)
                    arr(i) = wks.Name
                    i = i + 1
                End If
            End If
        Next rng
        Dim printSheets As Variant
        printSheets = arr
        Worksheets(printSheets).PrintOut Preview:=False, ActivePrinter:="Adobe PDF", PrintToFile:=True, PrToFileName:=PSFileName
    Next x

 End Sub

Я учусь по ходу работы с vba ..... он работает только для столбца A, зависает на последней строке и надеется, что он запросит имя файла при переходе к следующему столбцу X. Здесь образец имен столбцов (я хочу напечатать каждый столбец имен листов в другой файл PDF)

       A                    B                   C
CA 10 - 50 Area 1   CO 10 - 50 Area 1   GA 10 - 50 Area 1
CA 10 - 50 Area 2   CO 10 - 50 Area 2   GA 10 - 50 Area 2
CA 10 - 50 Area 3   CO 10 - 50 Area 3   GA 10 - 50 Area 3
CA 10 - 50 Area 4       
CA 10 - 50 Area 5   

(столбец A - CA, столбец B - CO, а столбец C - GA)

1 Ответ

0 голосов
/ 09 мая 2018

Попробуйте выполнить цикл для каждого листа в массиве printSheets:

For Each itm In printSheets
Worksheets(itm).PrintOut Preview:=False, ActivePrinter:="Adobe PDF", PrintToFile:=True, PrToFileName:=PSFileName

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