HERBERS Excel-Forum - die Beispiele

Thema: Installierte Drucker auslesen

Home

Gruppe

API

Problem

Die installierten Drucker sollen ausgelesen werden.

Lösung
Den nachstehenden Code in ein Standardmodul eingeben, einer Schaltfläche zuweisen und starten.
ClassModule: DieseArbeitsmappe

StandardModule: Modul1

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 Long, ByVal _
   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

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

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

Beiträge aus dem Excel-Forum zu den Themen API und Drucker

Excel to Word Kapitel VBA Anfangskapital berechnen
Gestapelte Säulen-Diagramm: Ich kapier's nicht Googel Maps API in Excel VBA einfügen
Automatischen Andruck auf Standartdrucker erzeugen Druckerauswahl
Kann bestimmten Drucker nicht auswählen Drucker nicht vorhanden, dann Meldung
Mit Makro Virtuelle Drucker (PDF) ansteuern Standarddrucker festsetzen??
Druckerdialog Laufzeitfehler Nr. 9 bei Druckerauswahl
Berechnung vom Endkapital Druckaufträge in Warteschlange von Netzwerkdrucker
Drucker anhalten? Druckereinstellungen
API? - xl-Parameter aus Long-Wert bestimmen Berechnung Kapitalanlage
Druckertreiber wählen Druckereinstellungen Adobe PDF per Makro abfragen
Telefonnummer auslesen per TAPI Drucker auslesen
Druckerauswahl bei Makro Drucker wählen
Standarddrucker Läuft RSAPI.DLL mit WIN2000 und XP?
JAVA API mit VBA verwenden aktiven drucker wechseln
VBA Druckerausgabe Drucker auswählen
Druckereinstellungen tabellenblätter drucken mit versch. druckern
Drucker auf aktiv setzen in VBA Druckereinstellungen nach Druckerauswahl per VBA
Drucker wechseln Drucken auf beliebigen Drucker / Korrekturen ?
Standard-Drucker als Auswahl im Drucken...-Menu nicht installierten Netzwerkdrucker nutzen
Druckerauswahl (Netzwerk) Ansprechen von Druckern
Drucker festlegen, pdf erzeugen und aufrufen Druckerports
Fehler bei Druckerwahl aus Combobox Combobox mit Druckern füllen
Papierformat speichern Ausdruck / Drucker modal ?
verschiedene Papierquele beim Drucken Drucker auswählen
Entnahme mit Kapitalverzehr Berechnung Endkapital / Zinsen