Utiliser une macro Excel pour choisir une imprimante - VB/VBA/VBS - Programmation
Marsh Posté le 02-02-2004 à 03:30:19
Bonjour,
Voila une solution qui pourrait peut etre t'aider, ca va lister tutes les imprimantes exustante sur l'ordinateur. Tu n'as plus qu'e selectionner la bonne imprimante par son nom:
Private Declare Function EnumPrintersA Lib "Winspool.drv" _
(ByVal flags As Long, ByVal Name As String, ByVal Level As Long, _
pPrinterEnum As Long, ByVal cdBuf As Long, _
pcbNeeded As Long, pcReturned As Long) As Long
Private Declare Function lstrlenA Lib "Kernel32" _
(ByVal lpString As Any) As Long
Private Declare Function lstrcpyA Lib "Kernel32" _
(ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Function Imprimantes()
Dim PrinterEnum() As Long, Impr() As String
Dim Needed As Long, Returned As Long, i As Integer
EnumPrintersA 2, vbNullString, 5, 0, 0, Needed, 0
If Needed = 0 Then Exit Function
ReDim PrinterEnum(Needed / 4)
EnumPrintersA 2, vbNullString, 5, PrinterEnum(0), _
Needed, Needed, Returned
ReDim Impr(1 To Returned)
For i = 1 To Returned
Impr(i) = Space$(lstrlenA(PrinterEnum(i * 5 - 5)))
lstrcpyA Impr(i), PrinterEnum(i * 5 - 5)
Next i
Imprimantes = Impr
End Function
Sub ListeImprimante()
Dim Impr
For Each Impr In Imprimantes
MsgBox Impr
Next
End Sub
Marsh Posté le 30-01-2004 à 17:44:44
J'ai un fichier Excel contenant une macro me permettant de définir les paramètres d'impression et notamment l'imprimante destinataire du document. Cette macro fonctionnait sur des machines avec W98 et ne fonctionne plus avec W XP Pro. Le débugger me signale que le port d'imprimante Ne0x n'est pas le bon celui ci varie d'une machine à l'autre en fonction de l'ordre dans lequel les imprimantes réseaux ont été installé sur la machine. Y'a t'il une solution pour trouver automatiquement le nom ou l'adresse de l'imprimante désirée.