1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Public Function SetDefaultPrinter(stNomFichier As String, stWhere As String) As Boolean
Dim wsn As Object
On Error GoTo Err_2
Dim strBuffer As String
'====================================
' Si DAO placer le 4 lignes suivantes
Dim Rs As DAO.Recordset
Set Rs = CurrentDb.OpenRecordset("SELECT LP_Names.* FROM LP_Names WHERE LP_Names.Lp_Default = true;")
On appelle un formulaire qui permet de cocher les imprimantes que l'on veut utiliser
'====================================
' si Ado placer les 4 lignes suivantes
' Dim Rs As New ADODB.Recordset
' Rs.Open "SELECT LP_Names.* FROM LP_Names WHERE LP_Names.Lp_Name = '" _
' & Imprimante & "';", _
' CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
'====================================
' On parcourt la table des imprimantes, puis on détermine l'imprimante par défaut
If Not Rs.BOF Then
While Not Rs.EOF
strBuffer = Rs("Lp_Name") & "," & Rs("Lp_Driver") & "," & Rs("Lp_Port")
Call WriteProfileString("Windows", "Device", strBuffer)
Call SendMessageTimeoutStr(HWND_BROADCAST, WM_WININICHANGE, 0, "Windows", SMTO_NORMAL, 1000, 0)
SetDefaultPrinter = True
Set wsn = CreateObject("WScript.Network")
wsn.SetDefaultPrinter Rs("Lp_Name")
' Impression de l'état
DoCmd.OpenReport stNomFichier, , , stWhere
Set wsn = Nothing
Rs.MoveNext
Wend
Else
SetDefaultPrinter = False
End If
Err_1:
On Error Resume Next
Rs.Close
Set Rs = Nothing
Exit Function
Err_2:
SetDefaultPrinter = False
Resume Err_1
End Function |
Partager