Définir l'imprimante
Comment définir l'imprimante à utiliser
Avant d'imprimer certains états, on peut souhaiter utiliser une imprimante particulière. Comme par exemple une imprimante laser, imprimante jet d'encre couleur ou encore une imprimante PDF.
Le code ci-dessous permet cela et pour définit l'imprimante, on utilisera :
ChoixImprimante "Nom d'imprimante"
Ce nom d'imprimante sera celui qui est affiché par Windows via le menu Démarrer > Paramètres > Périphériques > Imprimantes et scanneurs.
Dans Access, on peut utiliser la fonction :
fnActualPrinter()
Code à placer dans le module général :
Option Compare Database
Option Explicit
'// déclarations
Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" ( _
ByVal lpszSection As String, _
ByVal lpszKeyName As String, _
ByVal lpszString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_WININICHANGE = &H1A
Public Function SetDefaultPrinter(objPrn As Printer) As Boolean
'// appel système pour définir l'imprimante
Dim X As Long, sztemp As String
sztemp = objPrn.DeviceName & "," & objPrn.DriverName & "," & objPrn.Port
X = WriteProfileString("windows", "device", sztemp)
X = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0&, "windows")
End Function
Public Function ChoixImprimante(NomImprimante As String)
Dim prt As Printer
Dim bOk As Boolean
bOk = False
For Each prt In Printers
If prt.DeviceName = NomImprimante Then
SetDefaultPrinter prt
bOk = True
DoEvents
Exit For
End If
Next
If Not bOk Then MsgBox "Nom d'imprimante pas trouvée !"
End Function
Public Function fnActualPrinter() As String
'/ fonction qui retourne le nom de l'imprimante actuelle
fnActualPrinter = Application.Printer.DeviceName
End Function
Catégorie : Les mémos - Modules
Page lue 2675 fois