Application.Printers返回错误消息“对象不支持此属性或方法”

我是否需要select特定的引用来使打印机属性可见? 哪一个?

Excel VBA工作表对象具有PrintPreview方法。 如果默认值不合要求,您可以从预览屏幕select您的打印机。 此外,工作表上的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 '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在Excel中不可用,尽pipe它在Access中。