• Printing custom views

    Author
    Topic
    #486651

    Hi

    We have a workbook with several worksheets and many custom views set up, 1 worksheet has 14. I
    wish to generate a list of custom views in a workbook, select 1, display
    selected, print selected or select all and print.

    I located some code that lists all active worksheets in a workbook. I have tried to adapt the code to show custonvoews but haven’t had any luck.

    Option Explicit

    Sub SelectSheets()
    Dim i As Integer
    Dim TopPos As Integer
    Dim SheetCount As Integer
    Dim PrintDlg As DialogSheet
    Dim CurrentSheet As Worksheet
    Dim cb As CheckBox
    Application.ScreenUpdating = False

    ‘ Check for protected workbook
    If ActiveWorkbook.ProtectStructure Then
    MsgBox “Workbook is protected.”, vbCritical
    Exit Sub
    End If

    ‘ Add a temporary dialog sheet
    Set CurrentSheet = ActiveSheet
    Set PrintDlg = ActiveWorkbook.DialogSheets.Add

    SheetCount = 0

    ‘ Add the checkboxes
    TopPos = 40
    For i = 1 To ActiveWorkbook.Worksheets.Count
    Set CurrentSheet = ActiveWorkbook.Worksheets(i)
    ‘ Skip empty sheets and hidden sheets
    If Application.CountA(CurrentSheet.Cells) 0 And _
    CurrentSheet.Visible Then
    SheetCount = SheetCount + 1
    PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5
    PrintDlg.CheckBoxes(SheetCount).Text = _
    CurrentSheet.Name
    TopPos = TopPos + 13
    End If
    Next i

    ‘ Move the OK and Cancel buttons
    PrintDlg.Buttons.Left = 240

    ‘ Set dialog height, width, and caption
    With PrintDlg.DialogFrame
    .Height = Application.Max _
    (68, PrintDlg.DialogFrame.Top + TopPos – 34)
    .Width = 230
    .Caption = “Select sheets to print”
    End With

    ‘ Change tab order of OK and Cancel buttons
    ‘ so the 1st option button will have the focus
    PrintDlg.Buttons(“Button 2”).BringToFront
    PrintDlg.Buttons(“Button 3”).BringToFront

    ‘ Display the dialog box
    CurrentSheet.Activate
    Application.ScreenUpdating = True
    If SheetCount 0 Then
    If PrintDlg.Show Then
    For Each cb In PrintDlg.CheckBoxes
    If cb.Value = xlOn Then
    Worksheets(cb.Caption).Select Replace:=False
    End If
    Next cb
    ‘: PrintViews
    ActiveWindow.SelectedSheets.PrintOut copies:=1
    ActiveSheet.Select
    End If
    Else
    MsgBox “All worksheets are empty.”
    End If

    ‘ Delete temporary dialog sheet (without a warning)
    Application.DisplayAlerts = False
    PrintDlg.Delete

    ‘ Reactivate original sheet
    CurrentSheet.Activate
    End Sub

    Can anyone help?

    Viewing 0 reply threads
    Author
    Replies
    Viewing 0 reply threads
    Reply To: Printing custom views

    You can use BBCodes to format your content.
    Your account can't use all available BBCodes, they will be stripped before saving.

    Your information: