Mejora en impresión por medio de macro

Tengo este macro

Private Sub imprimir()
Application.ScreenUpdating = False
Sheets("IMPRESION").Select
Range("A:G" & j).Select
Selection.PrintOut Copies:=1
Sheets("JUGADOS").Select
Application.ScreenUpdating = True
End Sub

pero quiero que cuando imprima, el papel suba un poco mas para arriba para cuando al cortarlo las letras no queden tan en el borde.

PD: Uso una impreso Star SP500

1 respuesta

Respuesta
1

Puedes hacerlo en la configuración de la página. En márgenes superior, escribe 4 y prueba.

Con la macro sería algo así

With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.78740157480315)
.RightMargin = Application.InchesToPoints(0.78740157480315)
.TopMargin = Application.InchesToPoints(1.5748031496063)
.BottomMargin = Application.InchesToPoints(0.984251968503937)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
End Sub

En esta línea puedes incrementar el margen superior de la hoja

.TopMargin = Application.InchesToPoints(1.5748031496063)

Saludos. Dam

Pero es el margen inferior es que yo quiero aumentar

Ah, entonces cambia en la configuración de la impresora el margen inferior, o bien, en la macro aumenta el número en esta línea

BottomMargin = Application.InchesToPoints(0.984251968503937)

Saludos. Dam

Pero con este código solo imprime la cierta área

Private Sub imprimir()
Application.ScreenUpdating = False
Sheets("IMPRESION").Select
Range("A:G" & j).Select
Selection.PrintOut Copies:=1
Sheets("JUGADOS").Select
Application.ScreenUpdating = True
End Sub

y los que quiero es que imprima 2 o tres filas mas para abajo (que va a están emblaco y asi el papel sube un poco mas.

PD: Quiero hacerlo con esta macro porque no siempre es la misma cantiadas de filas que imprime debido a que "J" es variable.

Agrega esto a tu macro

With ActiveSheet.PageSetup
.TopMargin = Application.InchesToPoints(1.73)
.BottomMargin = Application.InchesToPoints(1.71)
End With

Vas a tener que jugar con esos valores para encontrar lo que necesitas

Saludos. Dam

Pero es que usted me hace referencia a los margenes y yo lo que quiero es imprimir 3 o 4 filas mas hacia bajo de lo que me imprime que es la selección "Range("A:G" & j).Select"

Los margenes que te estoy dando son los margenes superior e inferior, no los de la derecha o izquierda.

Si aumentas este valor a 5, verás que la hoja se imprime más hacia abajo

.TopMargin = Application.InchesToPoints(5)

O es otra cosa lo que quieres.

¿No quieres que empiece desde la fila 1 la impresión?

¿Quieres qué empiece en una fila que tu le digas?

Puede ser con esto:

Private Sub imprimir()
j = Range("B" & Rows.Count).End(xlUp).Row
ini = 4
Application.ScreenUpdating = False
Sheets("IMPRESIÓN").Select
rango = "A" & ini & ":G" & j
Range(rango).Select
ActiveSheet.PageSetup.PrintArea = rango
Selection.PrintOut Copies:=1
Sheets("JUGADOS").Select
Application.ScreenUpdating = True
End Sub

En este ejemplo, el valor de j es igual al último valor de la columna B, cambia la B, para indicar cuál columna quieres.

La variable ini, en este ejemplo le puse 4, pero puedes ponerle el valor que tu quieras

Saludos. Dam

lo que quiero es que termine de imprimir 4 lineas mas abajo de donde lo hace ahora con este macro:

Private Sub imprimir()
Application.ScreenUpdating = False
Sheets("IMPRESION").Select
Range("A:G" & j).Select
Selection.PrintOut Copies:=1
Sheets("JUGADOS").Select
Application.ScreenUpdating = True
End Sub

No te entiendo

OK, voy a probar con los margenes en la noche porque la impresora la tengo en la casa.

Puedes probar y enviar un impresión preliminar a pantalla

Comenta esta línea

Selection.PrintOut Copies:=1

Y pon esta

ActiveWindow. SelectedSheets. PrintPreview

Cambia el valor de lo margenes, primero uno y luego el otro, a número grandes para que aprecies el cambio.

ok, pero en superrrrmacro que tengo que significa Range("A:G" & j).

Esto : Range("A:G" & j), selecciona desde la A hasta la G fila j, pero la j es 0, así que debe marcarte un error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas