Macro para imprimir hoja de Excel





En este post voy a mostrar macro permite imprimir una hoja en Excel, anteriormente había mostrados como configurar la hoja de Excel, a través de estas dos macros podrás automatizar la configuración de la hoja de Excel y luego la impresión de la misma, en post siguientes te mostraré como imprimir una selección, como imprimir un libro entero, como así también como seleccionar una impresora distinta a la predeterminada, como imprimir en una impresora distinta a la predeterminada, todo mediante macro de VBA.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Al final hay un link del cual podrás descargar el ejemplo y adaptarlo a tus necesidades, el código se encuentra abierto y sin ningún tipo de restricción, te recomiendo descargar el ejemplo y ver su codificación y funcionamiento, aclaro que si deseas probar el ejemplo y no imprimir, solo apaga la impresora o elige otro impresora que imprima en PDF u otra que no este en conexión o apagada.

El ejemplo en primer lugar la macro configura la página, si deseas saber que hace cada comando que configura la hoja de Excel mira el post referido a ello, una vez configurada la misma se establecen las opciones de impresión, como por ejemplo cantidad de copias, intercalado, si se imprimirá la hoja, libro o selección.

El siguiente es el código que comanda la impresión:

ActiveSheet.PrintOut From:=1, To:=3, Copies:=3, Collate:=True, IgnorePrintAreas:=False

Con ActiveSheet.PrintOut ya la macro da la orden de impresión de la hoja activa, los siguientes argumentos son opcionales y determinan:

From:=1, To:=3; determina que hojas se deben imprimir en este caso se imprimirá de la hoja 1 a la hoja 3; si este argumento no se encuentra o se obvia se imprime todo.

Copies:=3; determina la cantidad de copias a realizar del documento a imprimir.

Collate:=True; establece si las copias se deben intercalar es decir acomodar las hojas por orden 1,2,3, etc, o primero hace la cantidad de copias solicitadas de 1, luego de 2 y así sucesivamente.

IgnorePrintAreas:=False; determina en este caso que no ignore el área de impresión, es decir si se hubiera fijado un área de impresión se tendrá en cuenta, si el valor fuese True, ignorará el área de impresión establecido.

Te invito a descargar el ejemplo y analizar el código que podrás adaptar a tus necesidades, en relación al código que configura la página, se agregan todos los comandos existentes, pero funciona si solo se pone lo que se quiere modificar solamente.


El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.




Código que se inserta en un userform





Sub PrintSheet()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 0
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PrintOut From:=1, To:=3, Copies:=3, Collate:=True, IgnorePrintAreas:=False
End Sub






Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.



If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends