Hola de nuevo. Yo ya pude solucionar el problema. Al final tuve que prescindir del CommonDialog. Por lo visto tiene un error y si haces algunos cambios a las propiedades de la impresora desde código, ya no funciona bien.
Lo que si funciona es usar una sentencia como la sigueinte:
Set Printer = Printers(i)
Sólo debes conocer los valores del array Printers()
Abajo te pongo un ejemplo.
Lo que yo hice fue lo siguiente:
Código:
'pongo en un formulario aparte una lista de todas las impresoras:
Private Sub Form_load()
Dim i As Integer
' recorre las impresoras del sistema y las añade a la lista
For i = 0 To Printers.Count - 1
List1.AddItem Printers(i).DeviceName
Next
End Sub
Private Sub Command1_Click()
Dim Prt As Printer
If List1.ListIndex <> -1 Then
' Establece la impresora que se utilizará para imprimir
For Each Prt In Printers
If Prt.DeviceName = List1.Text Then
Set Printer = Prt
End If
Next
MsgBox List1.Text & " Seleccionada.", vbInformation, "Info"
End If
Form5.Hide
Un saludo y espero que te sirva.