Macro selecciona impresora distinta a la activa





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.

  

En este post voy a mostrar como seleccionar una impresora distinta a la que está por defecto o macro para seleccionar impresora distinta a  la impresora activa, anteriormente te mostré como configurar una hoja de Excel previo a la impresión. Muchas veces se requiere imprimir en una impresora, pero que es distinta a la que se encuentra configurada por defecto, con esta macro lo que se hace es seleccionar una impresora distinta a la activa y luego imprimir, cabe aclarar que se realiza todo por macro, ya que hay una variante que mostraré más adelante que es que aparezca un cuadro de diálogo con el listado de impresoras para elegir la que queramos y luego imprimir.

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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.

En primer lugar definimos las variables que van a contener los nombres de la impresora activa y el de la impresora en la que deseamos imprimir, este ejemplo contiene previo a imprimir una configuración de la hoja de Excel, código que no es necesario para el fin que se intenta mostrar, que es como seleccionar o imprimir en una impresora distinta a la predeterminada, estas variables se denominan en el ejemplo def y NewPint respectivamente.

Posterior a la definición de variables, se encuentra la configuración de la página u hoja de Excel, en el definimos lo necesario, margenes, encabezados, pie de página, orientación de la hoja etc.; una vez realizado esto, se encuentra el código propiamente dicho para seleccionar la impresora que deseamos; lo primero es asignar a la variable def el nombre de la impresora activa o actual con este código:
def = Application.ActivePrinter

Luego se asigna a la otra variable definida el nombre de la impresora en la que deseamos imprimir con este código:

NewPrin = "PDF Creator en Ne00:"

Ahora establecemos como impresora actual, la impresora en la que deseamos imprimir y lanzamos el comando para imprimir, en este caso se define que se imprima dos copias, que las copias se intercalen y que no se ignore el área de impresión, todo ello con los códigos siguientes:
Application.ActivePrinter = NewPrin
ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False

Por último volvemos a dejar como impresora activa la que se encontraba por defecto al principio de iniciar la macro, se puede dejar cualquier impresora o de dejar la impresora en la que imprimimos si omitimos este paso, el código es:

Application.ActivePrinter = def

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, con la codificación que se encuentra más abajo y que es la misma que encontrarás en el ejemplo descargado podrás seleccionar e imprimir en una impresora distinta a la actual, predeterminada o por defecto..

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()
Dim def As String, NewPrint As String
 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

def = Application.ActivePrinter
NewPrin = "PDF Creator en Ne00:"
Application.ActivePrinter = NewPrin
'ActiveSheet.PrintOut
ActiveWorkbook.PrintOut Copies:=2, Collate:=True, IgnorePrintAreas:=False
Application.ActivePrinter = def
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