Macro especificaciones de impresión

Respuesta de
a
Usuario
Buen día. Quiero saber cómo establecer las especificaciones de impresión desde una macro. Por ejemplo, que imprima siempre en borrador, en ambas caras, desde la última hoja, etc.
Ya intenté grabar la rutina, pero sólo aparece ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Gracias.
Avatar
Experto
Posibles instrucciones:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
on Error Resume Next
.PageSetup.LeftFooter = " &F &A" 'works in print preview
.PageSetup.LeftFooter = ThisWorkbook.FullName & " &A"
.PageSetup.RightFooter = "&8 &D &T"
If LCase(ActiveSheet.Name) = "sheet28" Then
.PageSetup.PrintArea = .Cells(1, 1).Resize( _
.Range("A" & Rows.Count).End(xlUp).Row, Columns.count).Address
End If
End With
jcgonzalez3165@gmail.com
Usuario
Lo intenté pero algo debo estar obviando. Lo que hice fue:
Puse a grabar sólo para que me generara el código de macro, y luego me fui al paso a paso para copiar tu texto. Cuando lo pruebo me marca: Sub macro1() en amarillo y me dice que se esperaba un End Sub, y el único que aparece está al final de la instrucción. ¿Qué hice mal?
Avatar
Experto
Pon el código.
Usuario
Sub MACRO2()
'
' Macro2 Macro
' Macro grabada el 19/02/2009
'
' Acceso directo: CTRL+q
'
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
On Error Resume Next
.PageSetup.LeftFooter = " &F &A" 'works in print preview
.PageSetup.LeftFooter = ThisWorkbook.FullName & " &A"
.PageSetup.RightFooter = "&8 &D &T"
If LCase(ActiveSheet.Name) = "sheet28" Then
.PageSetup.PrintArea = .Cells(1, 1).Resize( _
.Range("A" & Rows.Count).End(xlUp).Row, Columns.Count).Address
End If
End With
End Sub
Avatar
Experto
Hola lulula, tienes que quitarle: Private Sub Workbook_BeforePrint(Cancel As Boolean)
jcgonzalez3165@gmail.com
Usuario
OK, ya no se queda... ¿PERO cómo hago para que cambie las propiedades de impresión? Fíjate que usualmente tengo que imprima en calidad estándar pero siempre que se imprima esa hoja debe ir en borrador y duplex. ¿Cómo hago eso?
El encabezado y pie de página ya lo había programado, pero es este simple detalle, que cuando le dé clic al ícono que puse para imprimir la "hoja 1", lo haga en impresión borrador y no de alta calidad.
Gracias por la paciencia!
Usuario
Hola, fíjate que traveseando un poco más no me había percatado que en configurar página está el botón de opciones de impresión! :) Horas después, lo encontré y resultó.
No sé si a eso te referías pero es que yo no entendía cómo funcionaba o de dónde salía.
Este es el código:
Sub Macro7()
'
' Macro7 Macro
' Macro grabada el 19/02/2009
' Acceso directo: Ctrl+Mayús+Z
'
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$4"
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = "Libro1 &A"
.CenterFooter = ""
.RightFooter = "&8 &D &T"
.LeftMargin = Application.InchesToPoints(0.28740157480315)
.RightMargin = Application.InchesToPoints(0.393700787401575)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0.393700787401575)
.FooterMargin = Application.InchesToPoints(0.393700787401575)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = -2
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Muchas gracias por la ayuda!