Print Worksheets VBA

In Excel, when you click the Print button, Excel will not print hidden sheets, except use VBA. Here is a large examples of print Worksheets use Excel VBA, Before you read this tutorial, you may need to know the difference between Worksheets and Sheets.

PrintOut Syntax

expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)

Print Worksheets on One Page

'Print Sheet1 exactly one page wide and tall
With Worksheets("Sheet1").PageSetup
    .Zoom = False
    .FitToPagesTall = 1
    .FitToPagesWide = 1
End With

Print Worksheets with Comments

Sub PrintWorksheetsWithComments()
    'Display all comments
    Application.DisplayCommentIndicator = xlCommentAndIndicator
    With ActiveSheet
        'As displayed on sheet
        .PageSetup.PrintComments = xlPrintInPlace
        'Print the active sheet
        .PrintOut
    End With
End Sub

Print Only Hidden Worksheets

Sub PrintOnlyHiddenWorksheets()
    Dim CurVis As Long
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        With sh
            CurVis = .Visible
            If CurVis >= 0 Then
                .Visible = xlSheetVisible
                .PrintOut
                .Visible = CurVis
            End If
        End With
    Next sh
End Sub

Print Visible and Hidden Worksheets

Sub PrintHiddenAndVisibleWorksheets()
    Dim CurVis As Long
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Worksheets
        With sh
            CurVis = .Visible
            .Visible = xlSheetVisible
            .PrintOut
            .Visible = CurVis
        End With
    Next sh
End Sub

Print Multiple Worksheets

'Print Sheet2 and Sheet3
Worksheets(Array("Sheet2", "Sheet3")).PrintOut

Print All Worksheets

'Print all worksheets
Worksheets.PrintOut

Print All Charts

'Print all Charts
Charts.PrintOut

Print Whole Workbook

'Print the active whole workbook
ActiveWorkbook.PrintOut
'Print this workbook which the VBA code in
ThisWorkbook.PrintOut

Print a Specific Sheet

'Print only "Sheet2"
Sheets("Sheet2").PrintOut

Print the Active Sheet

'only the activesheet
ActiveSheet.PrintOut

Print Selected Sheets

'Print all selected sheets
ActiveWindow.SelectedSheets.PrintOut

Print Selection

'Print only the selection
Selection.PrintOut

Print A Range

'Print range A1:C6
Range("A1:C6").PrintOut

Print preview

'Active sheet print preview
ActiveSheet.PrintOut preview:=True

Leave a comment

Your email address will not be published. Required fields are marked *

Format your code: <pre><code class="language-vba">place your code here</code></pre>

13 comments
  1. SH
    ShaynaGalvin

    I see your blog needs some fresh & unique articles.
    Writing manually is time consuming, but there is solution for this.
    Just search for; Masquro's strategies

  2. MA
    Mallesh

    HI This is Mallesh,

    Could you please help me .

    Actually by using macros i have prepared progress cards. the problem is all printing in individual sheet.

    is there any possibility to print two reports in one sheet.

  3. PC
    Pranab Chaturvedi

    How to print data from only one worksheet to Text file and I need to insert the VB in another sheet.

More comments