Объект Excel VBA Worksheet имеет метод PrintPreview.Вы можете выбрать свой принтер на экране предварительного просмотра, если по умолчанию это нежелательно.Кроме того, объект PageSetup на рабочем листе имеет множество свойств для подготовки рабочего листа к печати.
Вот пример:
Public Sub PrintActiveSheet_S()
Dim worksheetPrintable As Worksheet
Dim iLastDataRow As Integer
Dim iRowCount As Integer
Dim iPrintAreaEndRow As Integer
Dim origScreenUpdating As Boolean
Dim origCalcMode As Integer
On Error GoTo eh
Set worksheetPrintable = ActiveSheet
worksheetPrintable.PageSetup.PrintArea = "$A$1:$AD$" & iPrintAreaEndRow
'Speed up printing setup '/151855/pechat-bystree-v-excel
origScreenUpdating = Application.ScreenUpdating
Application.ScreenUpdating = False
origCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
With ActiveSheet.PageSetup
If Not .BlackAndWhite = False Then .BlackAndWhite = False
If Not .BottomMargin = Application.InchesToPoints(0.25) Then .BottomMargin = Application.InchesToPoints(0.25)
If Not .CenterFooter = "Page &P of &N" Then .CenterFooter = "Page &P of &N"
If Not .CenterHeader = "" Then .CenterHeader = ""
If Not .CenterHorizontally = True Then .CenterHorizontally = True
If Not .CenterVertically = False Then .CenterVertically = False
If Not .Draft = False Then .Draft = False
If Not .FirstPageNumber = xlAutomatic Then .FirstPageNumber = xlAutomatic
If Not .FitToPagesTall = 50 Then .FitToPagesTall = 50
If Not .FitToPagesWide = 1 Then .FitToPagesWide = 1
If Not .TopMargin = Application.InchesToPoints(0.25) Then .TopMargin = Application.InchesToPoints(0.25)
If Not .FooterMargin = Application.InchesToPoints(0.25) Then .FooterMargin = Application.InchesToPoints(0.25)
If Not .HeaderMargin = Application.InchesToPoints(0.25) Then .HeaderMargin = Application.InchesToPoints(0.25)
If Not .LeftMargin = Application.InchesToPoints(0.25) Then .LeftMargin = Application.InchesToPoints(0.25)
If Not .LeftFooter = "" Then .LeftFooter = ""
If Not .LeftHeader = "" Then .LeftHeader = ""
If Not .Order = xlDownThenOver Then .Order = xlDownThenOver
If Not .Orientation = xlLandscape Then .Orientation = xlLandscape
If Not .PaperSize = xlPaperLegal Then .PaperSize = xlPaperLegal
If Not .PrintComments = xlPrintNoComments Then .PrintComments = xlPrintNoComments
If Not .PrintGridlines = False Then .PrintGridlines = False
If Not .PrintHeadings = False Then .PrintHeadings = False
If Not .PrintTitleColumns = "" Then .PrintTitleColumns = ""
If Not .PrintTitleRows = "$3:$5" Then .PrintTitleRows = "$3:$5"
If Not .RightFooter = "" Then .RightFooter = ""
If Not .RightHeader = "" Then .RightHeader = ""
If Not .RightMargin = Application.InchesToPoints(0.25) Then .RightMargin = Application.InchesToPoints(0.25)
If Not .RightFooter = Now Then .RightFooter = Now
If Not .Zoom = False Then .Zoom = False
End With
worksheetPrintable.PrintPreview
GoTo func_exit
eh:
gEStruc.iErrNum = Err.Number
gEStruc.sErrorDescription = Err.Description
gEStruc.sErrorSource = Err.Source
m_rc = iErrorHandler_F(gEStruc)
If m_rc = CMD_RETRY Then
Resume
End If
func_exit:
Application.ScreenUpdating = origScreenUpdating
Application.Calculation = origCalcMode
Exit Sub
End Sub