开发者

Application.Printers returns error message "Object does not support this property or method"

开发者 https://www.devze.com 2023-03-03 02:36 出处:网络
Do I need to select a specific Reference to make printers p开发者_开发问答roperty visible? Which one?The Excel VBA Worksheet object has a PrintPreview method.You can select your printer from the Previ

Do I need to select a specific Reference to make printers p开发者_开发问答roperty visible? Which one?


The Excel VBA Worksheet object has a PrintPreview method. You can select your printer from the Preview Screen if the default is not desirable. Also, the PageSetup object on the Worksheet has lots of properties to prepare the worksheet for printing.

Here's an example:

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  'http://stackoverflow.com/questions/230382/how-to-print-faster-in-excel-vba
  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


Application.Printers is not available in Excel, though it is in Access.

0

精彩评论

暂无评论...
验证码 换一张
取 消