Выбор диапазона рабочих листов с использованием VBA - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу написать макрос печати в VBA, который будет печатать в формате pdf все рабочие листы между ними, включая рабочий лист с именем «Начало» и рабочий лист с именем «Конец». Я не хочу использовать все имена листов, так как я хочу, чтобы код работал, если новый лист вставляется между «Начало» и «Конец». Мне просто нужен код, который выбирает рабочие листы. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 октября 2019

Пожалуйста, попробуйте ниже;

Sub SaveBeginningToEnd()
    Dim wsBeginning As Worksheet
    Dim wsEnd As Worksheet
    On Error Resume Next
    Set wsBeginning = ThisWorkbook.Worksheets("Beginning")
    Set wsEnd = ThisWorkbook.Worksheets("End")
    On Error GoTo 0

    If wsBeginning Is Nothing Then
        Debug.Print "Cannot find worksheet Beginning"
        Exit Sub
    ElseIf wsEnd Is Nothing Then
        Debug.Print "Cannot find worksheet End"
        Exit Sub
    ElseIf wsBeginning.Index > wsEnd.Index Then
        Debug.Print "Beginning Worksheet is after End Worksheet."
        Exit Sub
    End If

    Dim varSheets() As Long
    ReDim varSheets(wsEnd.Index - wsBeginning.Index)

    For i = wsBeginning.Index To wsEnd.Index
        varSheets(i - wsBeginning.Index) = i
    Next i

    ThisWorkbook.Sheets(varSheets).Select

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    fd.AllowMultiSelect = False
    fd.Title = "Save As PDF"
    Dim intIndex As Integer
    For intIndex = 1 To fd.Filters.Count
        If fd.Filters(intIndex).Description = "PDF" Then fd.FilterIndex = intIndex
    Next
    If fd.Show = -1 Then
        ThisWorkbook.ExportAsFixedFormat xlTypePDF, fd.SelectedItems(1)
    End If

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