Macro VBA Excel para imprimir adecuadamente
A veces vale la pena incluir una función para que el usuario del libro pueda imprimir cómodamente (y seguro), por ejemplo desde un botón. De esta manera mantenemos el control sobre lo que se va a imprimir, y de los parámetros que se mandarán a la impresora.
Abajo encontrarás sencillos ejemplos de la aplicación de cómo imprimir desde Excel VBA:
- Selección
- Hojas seleccionadas
- Todas las hojas
Primero ajustamos los parámetros de la impresión, el apartado PageSetup. Luego se imprime con el método PrintOut.
Marcado VBA para imprimir las celdas seleccionadas
'preparar la hoja para la impresión
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With
'imprimir las celdas seleccionadas (1 copia)
ActiveWindow.Selection.PrintOut copies:=1, collate:=True
End Sub
Código VBA para imprimir las hojas seleccionadas
'preparar la hoja para la impresión
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With
'imprimir las celdas seleccionadas (1 copia)
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True
End Sub
Código VBA para imprimir todas las hojas del libro
'preparar la hoja para la impresión
'bucle que repasa todas las hojas
For Each Worksheet In ActiveWorkbook.Sheets
With ActiveSheet.PageSetup
.PrintArea = ""
.Orientation = xlPortrait 'xlLandscape
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With
Next Worksheet 'fin del bucle
'imprimir las celdas seleccionadas (1 copia)
ActiveWorkbook.PrintOut From:=1, To:=1, copies:=1, collate:=True
End Sub


