Récupérer l'imprimate active de VBE

Le
Gadget
Bonjour.
Comment récupérer le nom de l'imprimante active de VBE, celle sur laquelle
s'imprimera les UFs ? Je sais changer celle-ci, avec
CreateObject("Wscript.Network").SetDefaultPrinter, mais je ne connais pas le
nom de la propriété qui pourrait s'appeler .defaultprinter (mais c'est pas
ça).
D'ailleurs, ou puis-je trouver en ligne une liste de ces utilitaires bien
utiles (ce qui est la moindre des choses pour un utilitaire), avec leurs
arguments ?
Merci à tous.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #16489431
Bonjour Gadget,

Avec WMI ?

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Default = True")
For Each objPrinter In colInstalledPrinters
MsgBox objPrinter.Name
Next

plus de détails :


NB : La propriété 'Default' n'est pas disponible sous NT4 et W2K

Gadget a écrit :
Bonjour.
Comment récupérer le nom de l'imprimante active de VBE, celle sur laquelle
s'imprimera les UFs ? Je sais changer celle-ci, avec
CreateObject("Wscript.Network").SetDefaultPrinter, mais je ne connais pas le
nom de la propriété qui pourrait s'appeler .defaultprinter (mais c'est pas
ça...).
D'ailleurs, ou puis-je trouver en ligne une liste de ces utilitaires bien
utiles (ce qui est la moindre des choses pour un utilitaire...), avec leurs
arguments ?
Merci à tous.






--

Cordialement,

Jacques.
Gadget
Le #16489411
Merci, ça marche.

"Jacques93" a écrit dans le message de news:
%
Bonjour Gadget,

Avec WMI ?

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "rootcimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Default = True")
For Each objPrinter In colInstalledPrinters
MsgBox objPrinter.Name
Next

plus de détails :


NB : La propriété 'Default' n'est pas disponible sous NT4 et W2K

Gadget a écrit :
Bonjour.
Comment récupérer le nom de l'imprimante active de VBE, celle sur
laquelle s'imprimera les UFs ? Je sais changer celle-ci, avec
CreateObject("Wscript.Network").SetDefaultPrinter, mais je ne connais pas
le nom de la propriété qui pourrait s'appeler .defaultprinter (mais c'est
pas ça...).
D'ailleurs, ou puis-je trouver en ligne une liste de ces utilitaires bien
utiles (ce qui est la moindre des choses pour un utilitaire...), avec
leurs arguments ?
Merci à tous.






--

Cordialement,

Jacques.


Jacques93
Le #16489381
Merci du retour. Ou avec l'API :

Private Const ERROR_INSUFFICIENT_BUFFER = 122&
Private Declare Function GetDefaultPrinter Lib "winspool.drv" Alias _
"GetDefaultPrinterA" (ByVal pszBuffer As String, _
ByRef pcchBuffer As Long) As Long

Private Sub CommandButton1_Click()
Dim lResult As Long, BufLen As Long
Dim PrinterName As String

BufLen = 0
' Récupère la taille nécessaire pour le nom
lResult = GetDefaultPrinter(PrinterName, BufLen)
' Alloue le buffer pour le nom
PrinterName = String(BufLen, 0)
lResult = GetDefaultPrinter(PrinterName, BufLen)
' Supprime le zéro binaire de fin
PrinterName = Left(PrinterName, InStr(PrinterName, Chr$(0)) - 1)
MsgBox PrinterName
End Sub

Gadget a écrit :
Merci, ça marche.





--

Cordialement,

Jacques.
Gadget
Le #16489371
Merci pour ça aussi.
Et où peut-on trouver la liste de ces appels WMI, API et autres, avec leur
fonction, leur syntaxe sous VBA et leurs paramètres, le tout en ligne ?

"Jacques93" a écrit dans le message de news:
%
Merci du retour. Ou avec l'API :

Private Const ERROR_INSUFFICIENT_BUFFER = 122&
Private Declare Function GetDefaultPrinter Lib "winspool.drv" Alias _
"GetDefaultPrinterA" (ByVal pszBuffer As String, _
ByRef pcchBuffer As Long) As Long

Private Sub CommandButton1_Click()
Dim lResult As Long, BufLen As Long
Dim PrinterName As String

BufLen = 0
' Récupère la taille nécessaire pour le nom
lResult = GetDefaultPrinter(PrinterName, BufLen)
' Alloue le buffer pour le nom
PrinterName = String(BufLen, 0)
lResult = GetDefaultPrinter(PrinterName, BufLen)
' Supprime le zéro binaire de fin
PrinterName = Left(PrinterName, InStr(PrinterName, Chr$(0)) - 1)
MsgBox PrinterName
End Sub

Gadget a écrit :
Merci, ça marche.





--

Cordialement,

Jacques.


Jacques93
Le #16489361
Pour WMI, sur MSDN :


tu ouvre l'arborescence de gauche, attention y'a du monde
et comme les Api's sont également pléthoriques tu peux chercher sur
MSDN, mais il faut savoir quoi chercher ...

Pour les plus courantes, il y par exemple :


Bonne lecture :-)

Gadget a écrit :
Merci pour ça aussi.
Et où peut-on trouver la liste de ces appels WMI, API et autres, avec leur
fonction, leur syntaxe sous VBA et leurs paramètres, le tout en ligne ?




--

Cordialement,

Jacques.
Modeste
Le #16490861
Bonsour® Gadget avec ferveur ;o))) vous nous disiez :
Comment récupérer le nom de l'imprimante active de VBE, celle sur
laquelle s'imprimera les UFs ?



MsgBox Application.ActivePrinter

pour manipuler les imprimantes installées sur ton poste

Sub Change_printer()
printerold = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " & " >>>>> " & printerold

dlganswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlganswer = True Then
'------ ceci n'est qu'une seule instruction
reponse = MsgBox("L'imprimante active était : " _
& Chr(10) & " ====> " & printerold _
& Chr(10) & " elle sera maintenant : " _
& Chr(10) & " ====> " & Application.ActivePrinter _
& Chr(10) & "Voulez vous confirmer ?", _
vbQuestion + vbYesNo, _
"Changement d'imprimante")
'------
If reponse = vbYes Then
MsgBox "L'imprimante active actuelle devient : " _
& Chr(10) & " ====> "& Application.ActivePrinter
Exit Sub
End If
Else
Application.ActivePrinter = printerold
MsgBox "L'imprimante active reste : " _
& Chr(10) & " ====> "& printerold
End If
End Sub





--
--
@+
;o)))
Jacques93
Le #16491451
Bonjour Modeste,

Effectivement, imprimante VBE ...
Avec WMI ou l'API, cela change l'imprimante défaut du système.

Mais difficile de mixer les deux : Applcation.ActivePrinter inclut le
nom du port.

Modeste a écrit :
Bonsour® Gadget avec ferveur ;o))) vous nous disiez :
Comment récupérer le nom de l'imprimante active de VBE, celle sur
laquelle s'imprimera les UFs ?



MsgBox Application.ActivePrinter

pour manipuler les imprimantes installées sur ton poste

Sub Change_printer()
printerold = Application.ActivePrinter
MsgBox "L'imprimante active actuelle est : " & " >>>>> " & printerold

dlganswer = Application.Dialogs(xlDialogPrinterSetup).Show
If dlganswer = True Then
'------ ceci n'est qu'une seule instruction
reponse = MsgBox("L'imprimante active était : " _
& Chr(10) & " ====> " & printerold _
& Chr(10) & " elle sera maintenant : " _
& Chr(10) & " ====> " & Application.ActivePrinter _
& Chr(10) & "Voulez vous confirmer ?", _
vbQuestion + vbYesNo, _
"Changement d'imprimante")
'------
If reponse = vbYes Then
MsgBox "L'imprimante active actuelle devient : " _
& Chr(10) & " ====> "& Application.ActivePrinter
Exit Sub
End If
Else
Application.ActivePrinter = printerold
MsgBox "L'imprimante active reste : " _
& Chr(10) & " ====> "& printerold
End If
End Sub









--

Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme