Inicio » VBA-Ejemplos » Macro VBA Excel para imprimir adecuadamente

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

Sub Imprimir_seleccion()
 
'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

Sub Imprimir_seleccion()
 
'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

Sub Imprimir_seleccion()
 
'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
  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS