Alle vorhandenen Drucker auslesen

106009


 

 

Das nachfolgende Makro schreibt alle vorhandenen, installierten Drucker auf das erste Sheet in einer Arbeitsmappe. Sie müssen einfach nur den folgenden Code in ein Modul einfügen. Der Aufruf erfolgt über das Makro 'DruckerAuslesen'.

Sie können mit den ausgelesenen Druckern natürlich noch andere Sachen anstellen, als diese nur auf ein Tabellenblatt zu schreiben. Sinnvoll ist es, z. B. bei Blättern, deren Seitengröße auf A3 ausgelegt ist, den entsprechenden Drucker auszuwählen und auf diesem auszudrucken.


Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Declare Function RegOpenKeyEx _
Lib "advapi32.dll" _
Alias "RegOpenKeyExA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long _
) _
As Long

Declare Function RegEnumKeyEx _
Lib "advapi32.dll" _
Alias "RegEnumKeyExA" _
( _
ByVal hKey As Long, _
ByVal dwIndex As Long, _
ByVal lpName As String, _
lpcbName As LongByVal _
lpReserved As Long, _
ByVal lpClass As String, _
lpcbClass As Long, _
lpftLastWriteTime As FILETIME _
) _
As Long

Declare Function RegCloseKey _
Lib "advapi32.dll" _
( _
ByVal hKey As Long _
) _
As Long

_____________________________________________________________


Sub DruckerAuslesen()
Dim aPrinter As Variant
Dim iRow As Integer
For Each aPrinter In fncEnumInstalledPrintersReg
iRow = iRow + 1
Cells(iRow, 1) = aPrinter
Next aPrinter
End Sub

_____________________________________________________________


Public Function fncEnumInstalledPrintersReg() As Collection
Dim tmpFunctionResult As Boolean
Dim aFileTimeStruc As FILETIME
Dim AddressofOpenKey As Long, aPrinterName As String
Dim aPrinterIndex As Integer, aPrinterNameLen As Long
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const HKEY_LOCAL_MACHINE = &H80000002
Set fncEnumInstalledPrintersReg = New Collection
aPrinterIndex = 0
tmpFunctionResult = Not CBool _
( _
RegOpenKeyEx _
( _
hKey:=HKEY_LOCAL_MACHINE, _
lpSubKey:="SYSTEM\CURRENTCONTROLSET\CONTROL\PRINT\PRINTERS", _
ulOptions:=0, _
samDesired:=KEY_ENUMERATE_SUB_KEYS, _
phkResult:=AddressofOpenKey _
) _
)
If tmpFunctionResult = False Then Goto ExitFunction
Do
aPrinterNameLen = 255
aPrinterName = String(aPrinterNameLen, CStr(0))
tmpFunctionResult = Not CBool _
( _
RegEnumKeyEx _
( _
hKey:=AddressofOpenKey, _
dwIndex:=aPrinterIndex, _
lpName:=aPrinterName, _
lpcbName:=aPrinterNameLen, _
lpReserved:=0, _
lpClass:=vbNullString, _
lpcbClass:=0, _
lpftLastWriteTime:=aFileTimeStruc _
) _
)
aPrinterIndex = aPrinterIndex + 1
If tmpFunctionResult = False Then Exit Do
aPrinterName = Left(aPrinterName, aPrinterNameLen)
On Error Resume Next
fncEnumInstalledPrintersReg.Add aPrinterName
On Error Goto 0
Loop
Call RegCloseKey(AddressofOpenKey)
'
Exit Function
ExitFunction:
If Not AddressofOpenKey = 0 Then _
Call RegCloseKey(AddressofOpenKey)
Set fncEnumInstalledPrintersReg = Nothing
End Function

   

Artikel mit ähnlichen Themen

   

Aktuell sind 14 Gäste und keine Mitglieder online

   
Twitter Account für Excel-InsideExcel-Inside auf FacebookExcel-Inside auf Linked InExcel-Live News blogExcel-Inside RSS-FeedExcel-Inside auf Xing

Excel Auftragsprogrammierung

Access Auftragsprogrammierung
Word Auftragsprogrammierung

Outlook Auftragsprogrammierung

 Maßgeschneiderte
Individuallösungen
  für Ihren Erfolg
   

Sie haben eine Frage ...
... hier geht´s zum Office Forum

Forum Office-Fragen

   
   
   
   

Forum Office-FragenOffice-Fragen.de ist das Forum rund um Microsoft Office, PALO und LibreOffice.
[Excel, Word, Outlook, Access, Visio, Office365, Office mac: u.v.m.]

Wenn Sie Fragen haben, dann können Sie diese jederzeit gerne im Forum stellen. Die anwesenden Moderatoren und ggf.
auch andere Forumsteilnehmer werden Ihre Problemstellung schnellstmöglich bearbeiten.

Möchten Sie Ihr Wissen weitergeben? Dann sind Sie selbstverständlich auch jederzeit herzlich im Forum willkommen.

Jeder registrierte Benutzer erhält das kostenlose E-Book "Die 100 wichtigsten Formeln und Funktionen" für Excel.

Registrieren Sie sich noch heute und sichern Sie sich das kostenlose Willkommensgeschenk.

» zum Forum...

   
Live tracking and statistics