Aca te pongo una funcion que hise para cambiar la impresora sin intervencion del usuario (obviamente tenes que conocer el nombre exacto).
Código:
'========== Codigo realizado por CULD ==========
'============= [email protected] ===============
'Esta funcion cambia el objeto printer por la
'impresora que deseamos. Obviamente tenemos que
'conocer el nombre de la misma e ingresarlo correctamente
'===============================================
Public Function CambiarImpresora(Nombre As String) As Boolean
Dim Impresora As Printer 'creo un objeto para la impresora
For Each Impresora In Printers 'recorro todas las impresoras disponibles
If UCase(Impresora.DeviceName) = UCase(Nombre) Then 'verifico si la impresora actual es la que quiero
Set Printer = Impresora 'como encontre la impresora la asigno al objeto printer
CambiarImpresora = True 'informo que se cambio correctamente
End If
Next
CambiarImpresora = False 'no se encontro la impresora asi que no se pudo asignar
End Function
Para verificar que funciona correctamente, teniendo mas de una impresora EJ: tenes una EPSON y una HP, predetermina la EPSON, y agrega la funcion y pone un boton y pone lo siguiente:
Código:
Private Sub Command1_Click()
MsgBox Printer.DeviceName
CambiarImpresora ("Nombre exacto de la impresora HP")
MsgBox Printer.DeviceName
End Sub
Vas a notar que primero te aparece el nombre de la impresora epson y luego de la HP eso significa que se cambio correctamente.
IMPORTANTE: Esto no cambia la impresora predeterminada, es decir que sigue siendo la misma. Solamente cambia la impresora a utilizar por el objeto printer