Macro selecciona impresora distinta a la activa




Si estás usando macros para automatizar tu libro de Excel seguramente te es necesario saber seleccionar o referenciar celdas, en FORMAS DE SELECCIONAR O REFERENCIAR CELDAS CON VBA (Spanish Edition) encontrarás una excelente ayuda; si trabajas con fechas en Excel, fíjate en el siguiente link que te puede ser de utilidad FORMATOS Y FUNCIONES DE FECHA Y HORA DE MICROSOFT EXCEL (Spanish Edition)



 

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..

En el vídeo de YouTube que sigue encontrarás una explicación más detallada, no olvides suscribir al canal para recibir actualizaciones.



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