Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Netzwerk-Drucker festlegen

Netzwerk-Drucker festlegen
08.06.2004 13:12:13
marco_23
Hallo meine guten Retter in der Not,
ich würde gerne in einem Netzwerk
immer den gleichen Drucker mit der Methode Application.ActivePrinter
festlegen. Es ist aber bei jedem lokal an anderer Zusatz auf ... vorhanden ?
Was tun ?
Beispiel:
Application.ActivePrinter = "\\smuc2923\ZS2DR032 auf Ne01:"
Bei jemand anderem wäre aber der Eintrag:
Application.ActivePrinter = "\\smuc2923\ZS2DR032 auf Ne00:"
oder
Application.ActivePrinter = "\\smuc2923\ZS2DR032 auf Ne03:"
nötig !!!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Netzwerk-Drucker festlegen
Ramses
Hallo
wenn der Drucker installiert ist, sollte es gehen


Option Explicit
'Das gehört in ein Modul bis zum nächsten Kommentar
 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 LongAs 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 LongAs 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 oldPrinter As Variant
Dim iRow As Integer
oldPrinter = Application.ActivePrinter
For Each aPrinter In fncEnumInstalledPrintersReg
    If InStr(1, aPrinter, "ZS2DR032") > 0 Then
        Application.ActivePrinter = aPrinter
        'Befehl zum Ausdrucken
        'Dein Code
        'Drucker zurücksetzen
        Application.ActivePrinter = oldPrinter
        Exit Sub
    Next aPrinter
 End Sub


Gruss Rainer
Anzeige
End If Fehlt :-(
Ramses
Sorry
so muss es heissen

Sub DruckerAuslesen()
Dim aPrinter As Variant
Dim oldPrinter As Variant
Dim iRow As Integer
oldPrinter = Application.ActivePrinter
For Each aPrinter In fncEnumInstalledPrintersReg
If InStr(1, aPrinter, "ZS2DR032") > 0 Then
Application.ActivePrinter = aPrinter
'Befehl zum Ausdrucken
'Dein Code
'Drucker zurücksetzen
Application.ActivePrinter = oldPrinter
Exit Sub
'Hier fehlte das End If
End If
Next aPrinter
End Sub

Gruss Rainer
AW: End If Fehlt :-(
08.06.2004 15:13:30
marco_23
hallo rainer,
ich wollte gerne auch drucker, die übers netzwerk installiert wurde dabei haben !!
mit deiner routine, für die ich sehr danke, können nur lokale drucker erkannt werden...
Const HKEY_LOCAL_MACHINE = &H80000002
steht mal da....(Bedeutung?)
Hast du eine Idee ?
Anzeige
Kein Problem :-)
Ramses
Hallo
nimm den Code


Option Explicit
'(C) by Ramses
'Liest alle installierten Netzwerk-
'und lokalen Drucker aus
'Das gehört in ein Modul
 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 LongAs 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 LongAs Long
 
 
Public Function fncEnumInstalledPrintersReg() As Collection
'Liest alle am lokalen Computer 
'installierten Drucker aus
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
Public Function fncEnumInstalledPrintersRegNetwork() As Collection
'Liest alle unter dem Benutzer
'installierten Netzwerkdrucker aus
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_Current_user = &H80000001
Set fncEnumInstalledPrintersRegNetwork = New Collection
aPrinterIndex = 0
tmpFunctionResult = Not CBool( _
       RegOpenKeyEx( _
       hKey:=HKEY_Current_user, _
       lpSubKey:="Printers\Connections", _
       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
    fncEnumInstalledPrintersRegNetwork.Add aPrinterName
    On Error GoTo 0
Loop
Call RegCloseKey(AddressofOpenKey)
Exit Function
    
ExitFunction:
    If Not AddressofOpenKey = 0 Then _
       Call RegCloseKey(AddressofOpenKey)
    Set fncEnumInstalledPrintersRegNetwork = Nothing
End Function
Sub DruckerAuslesen()
Dim aPrinter As Variant
Dim oldPrinter As Variant
Dim iRow As Integer
oldPrinter = Application.ActivePrinter
For Each aPrinter In fncEnumInstalledPrintersReg
    Debug.Print "Lokale Drucker: " & aPrinter
    If InStr(1, aPrinter, "ZS2DR032") > 0 Then
        Application.ActivePrinter = aPrinter
        'Befehl zum Ausdrucken
        'Dein Code
        'Drucker zurücksetzen
        Application.ActivePrinter = oldPrinter
        Exit Sub
    End If
Next aPrinter
For Each aPrinter In fncEnumInstalledPrintersRegNetwork
    Debug.Print "Netzwerkdrucker: " & aPrinter
    If InStr(1, aPrinter, "ZS2DR032") > 0 Then
        Application.ActivePrinter = aPrinter
        'Befehl zum Ausdrucken
        'Dein Code
        'Drucker zurücksetzen
        Application.ActivePrinter = oldPrinter
        Exit Sub
    End If
Next aPrinter
End Sub


Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige