Utiliser une macro Excel pour choisir une imprimante

Utiliser une macro Excel pour choisir une imprimante - VB/VBA/VBS - Programmation

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.

Reply

Marsh Posté le 30-01-2004 à 17:44:44   

Reply

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
 

Reply

Marsh Posté le 03-08-2010 à 16:31:35    

SUPER !!
Merci pour ce post ! ça fonctionne nikel :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed