Eu uso a function abaixo:
Function F_Setar_Impres(Nome_Relatorio As String) As Boolean
'seta a impressora especifica para o objeto printer
On Error GoTo Err_F_Setar_Impres
Dim X As Printer, T_Teste As String
Dim Rc_Temp As Recordset, T_Cont As Long
Set Rc_Temp = Base_Termin.OpenRecordset("SELECT IR.* FROM Impressora_Rel AS IR WHERE (((IR.Relatorio)='" & Nome_Relatorio & "'));")
If Rc_Temp.RecordCount = 0 Then
T_Teste = Printer.DeviceName
Else
For Each X In Printers
If X.DeviceName = Rc_Temp("Impressora") Then
T_Cont = 1
Do Until Printer.DeviceName = Rc_Temp("Impressora")
If T_Cont > 10 Then GoTo Err_F_Setar_Impres
Set Printer = X
T_Cont = T_Cont + 1
Loop
F_Setar_Impres = True
Exit Function
End If
Next
End If
G_Mens "Não Existe uma impressora especifica para este Relatorio, usando a impressora Padrão!", MEN_INFORMA
F_Setar_Impres = True
Exit Function
Err_F_Setar_Impres:
If Err = 484 Then
G_Mens "Não existe impressora instalado em seu computador", MEN_INFORMA
Else
G_Mens "Não foi possivel encontrar a impressora para imprimir", MEN_INFORMA
End If
End Function
e quando preciso no formulário acesso assim:
If Not F_Setar_Impres("NF") Then Exit Sub
qualquer dúvida é so perguntar