Brauchen Sie Hilfe?
Web:     Online-Formular
E-Mail:  
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Tel:       +49(0)151 / 164 55 914

Nutzen Sie für Ihre Anfrage unser Online-Formular oder senden Sie uns eine E-Mail an Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!. Gerne können Sie aber auch direkt telefonisch Kontakt aufnehmen.

   
     Referenzen
 Bosch 
  T-Systems
  Hagebau
  Siemens
 Areva  VW
 Haufe-Lexware  British American Tobacco
  nagel group farbe
   

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 automatisch 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 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

_____________________________________________________________

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

   

Relevante Artikel

  • Ausgewählte Tabellenblätter drucken

    Wenn nicht die gesamte Arbeitsmappe sondern nur ausgewählte Tabellenblätter einer Arbeitsmappe gedruckt werden sollen, können Sie folgenden VBA-Code verwenden. Sub mehrereSheetsDrucken() '**...

  • Alle Blätter einer Arbeitsmappe drucken

    106002 Mit folgendem Makro werden alle Blätter in einer Arbeitsmappe gedruckt. In diesem Beispiel wird jedoch nicht gedruckt sondern die Seitenansicht angezeigt.     Sub alle_blaetter_drucken() Dim blatt...

  • 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...

  • Wiederholungszeilen auf einige Seiten beschränken

    Mit diesem Makro können Wiederholungszeilen auf einige Seiten beschränkt werden. Standardmäßig werden bei Aktivierung dieser Funktion die Wiederholungszeilen auf allen vorhandenen Seiten ausgegeben.   Die...

  • Druckdialog per VBA aufrufen

    Mit dem folgenden VBA-Code wird der Standarddruckdialog in Excel aufgerufen. Dort kann dann wie gewohnt der Drucker gewählt, Einstellungen vorgenommen und abschließend gedruckt werden. Sub...

   

Excel-Inside auf Facebook Excel-Live News blog Excel-Inside RSS-Feed Twitter Account für Excel-Inside Mail an Excel-Inside 

Programmierung
Excel Auftragsprogrammierung Access Auftragsprogrammierung
Word Auftragsprogrammierung Outlook Auftragsprogrammierung
   
Unsere Produkte
Office Schulungen VBA, Excel, Access
E-Book Formeln und Funktionen Excel 2013