Test état imprimante vba

4 réponses
Avatar
Patrednef
bsr a vous tous,

Je bute sur qq chose, je souhaite =E9crire un petit test qui permettrait
de savoir si l'imprimante est branch=E9 sur le pc ou non:

En gros si je suis en d=E9placement, alors le code fait autre chose, si
je suis a la maison, alors il lance l'impression, car a la maison je
suis connecte via ma station d'acceuil

Je vous remercie grandement de vote aide

Pat

4 réponses

Avatar
isabelle
bonjour Pat,

voici un début ,

Sub ListsPrinters()
Dim oFSO As Object
Dim WshNetwork As Object
Dim oPrinters As Object
Dim sPathFichier As String, sChaine As String, i As Integer
sPathFichier = ThisWorkbook.FullName
sChaine = "Imprimantes connectées au poste :"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set WshNetwork = CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
For i = 0 To oPrinters.Count - 1 Step 2
sChaine = sChaine & "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i + 1) & vbCrLf
Next
MsgBox sChaine
End Sub


--
isabelle


Le 2011-06-30 13:30, Patrednef a écrit :
bsr a vous tous,

Je bute sur qq chose, je souhaite écrire un petit test qui permettrait
de savoir si l'imprimante est branché sur le pc ou non:

En gros si je suis en déplacement, alors le code fait autre chose, si
je suis a la maison, alors il lance l'impression, car a la maison je
suis connecte via ma station d'acceuil

Je vous remercie grandement de vote aide

Pat
Avatar
Patrednef
Bonsoir Isabelle

Merci pour la piste, en listant les imprimantes, il trouve également
les imprimantes virtuelles type PDF creator ou XPS Writer ..

En fait je connais le nomde l'imprimante, puis je tester si celle dont
je connais le nom est "branché" sur le PC ou non "branché"

Un grand merci aux contributeurs pour votre coup de main, pourtant
bien habitué à écrire du code, je ne trouve pas le moyen de réalise r
celui la .... c'est l'age ?

Bonne soirée à vous tous,

Pat
Avatar
DanielCo
Bonsoir,

J'ai trouvé ça sur internet (mrexcel) :

Private Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal
lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As
String, ByVal lpInitData As Long) As Long


Public Function GetPDC(ByVal strPrinter As String) As Long
GetPDC = CreateIC("WINSPOOL", strPrinter, vbNullString, 0&)
End Function

Public Sub GetPrinter()
If GetPDC("Canon MP830 Series Printer") = 0 Then
MsgBox "Couldn't find printer :("
Else
'do some stuff
End If
End Sub

Il faut que tu mettes le nom de ton imprimante à la place de la mienne,
bien sûr. Si elle n'est pas connectée, tu reçois un message d'injure
(que j'ai eu la flemme de traduire.)

Cordialement.
Daniel


Bonsoir Isabelle

Merci pour la piste, en listant les imprimantes, il trouve également
les imprimantes virtuelles type PDF creator ou XPS Writer ..

En fait je connais le nomde l'imprimante, puis je tester si celle dont
je connais le nom est "branché" sur le PC ou non "branché"

Un grand merci aux contributeurs pour votre coup de main, pourtant
bien habitué à écrire du code, je ne trouve pas le moyen de réaliser
celui la .... c'est l'age ?

Bonne soirée à vous tous,

Pat
Avatar
Maude Este
Bonsour®

"Patrednef" a écrit
Merci pour la piste, en listant les imprimantes, il trouve également
les imprimantes virtuelles type PDF creator ou XPS Writer ..

En fait je connais le nomde l'imprimante, puis je tester si celle dont
je connais le nom est "branché" sur le PC ou non "branché"



autre alternative :
demander le changement ou confirmation de l'imprimante active

Sub TestPrinter()
x = Application.ActivePrinter
Rep = Application.Dialogs(xlDialogPrinterSetup).Show
y = Application.ActivePrinter
MsgBox "Avant : " & x & Chr(10) & "Maintenant : " & y
End Sub