Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
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
Inhaltsverzeichnis

Code32Bit auf 64Bit Druckerfunktion

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

Betreff
Datum
Anwender
Anzeige
AW: Code32Bit auf 64Bit Druckerfunktion
11.03.2021 20:32:46
Nepumuk
Hallo Andre,
für was brauchst du das?
Gruß
Nepumuk

AW: Code32Bit auf 64Bit Druckerfunktion
11.03.2021 20:42:37
Andre´
Hallo Nepumuk,
damit solle auf verschiedene Netzwerk- Drucker gedruckt werden auf Grund der Druckernamen (Teilstring) die in den Zellen stehen.
MFG Andre

AW: Code32Bit auf 64Bit Druckerfunktion
11.03.2021 20:45:46
Nepumuk
Hallo Andre,
das kannst du einfacher haben:
Option Explicit

Private Declare PtrSafe Function GetProfileStringA Lib "kernel32.dll" ( _
    ByVal lpAppName As String, _
    ByVal lpKeyName As String, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long) As Long

Private Const MAX_PRINTERS = 32&

Private lastrPrinterNames(MAX_PRINTERS) As String
Private lastrPrinterPorts(MAX_PRINTERS) As String

Private llngPrinterCount As Long

Public Sub GetPrinterList()
    Dim strBuffer As String
    Dim ialngIndex As Long
    strBuffer = Space$(&H2000)
    llngPrinterCount = 0
    Call GetProfileStringA("PrinterPorts", vbNullString, _
        vbNullString, strBuffer, Len(strBuffer))
    Call GetPrinterNames(strBuffer)
    Call GetPrinterPorts
    For ialngIndex = 0 To llngPrinterCount - 1
        Debug.Print lastrPrinterNames(ialngIndex) & " auf " & _
            lastrPrinterPorts(ialngIndex)
    Next
End Sub

Private Sub GetPrinterNames(ByVal strBuffer As String)
    Dim lngIndex As Long
    Dim strName As String
    Do
        lngIndex = InStr(strBuffer, vbNullChar)
        If lngIndex > 0 Then
            strName = Left$(strBuffer, lngIndex - 1)
            If Len(Trim$(strName)) > 0 Then
                lastrPrinterNames(llngPrinterCount) = Trim$(strName)
                llngPrinterCount = llngPrinterCount + 1
            End If
            strBuffer = Mid$(strBuffer, lngIndex + 1)
        Else
            If Len(Trim$(strBuffer)) > 0 Then
                lastrPrinterNames(llngPrinterCount) = Trim$(strBuffer)
                llngPrinterCount = llngPrinterCount + 1
            End If
            strBuffer = ""
        End If
    Loop While (lngIndex > 0) And (llngPrinterCount < MAX_PRINTERS)
End Sub

Private Sub GetPrinterPorts()
    Dim strBuffer As String
    Dim lngIndex As Long
    For lngIndex = 0 To llngPrinterCount - 1
        strBuffer = Space$(&H400)
        Call GetProfileStringA("PrinterPorts", lastrPrinterNames(lngIndex), _
            vbNullString, strBuffer, Len(strBuffer))
        Call GetPort(strBuffer, lastrPrinterPorts(lngIndex))
    Next
End Sub

Private Sub GetPort(ByVal Buffer As String, PrinterPort As String)
    Dim lngDriver As Long, lngPort As Long
    PrinterPort = ""
    lngDriver = InStr(1, Buffer, ",")
    If lngDriver > 0 Then
        lngPort = InStr(lngDriver + 1, Buffer, ",")
        If lngPort > 0 Then
            PrinterPort = Mid$(Buffer, lngDriver + 1, lngPort - lngDriver - 1)
        End If
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Code32Bit auf 64Bit Druckerfunktion
11.03.2021 21:46:54
Andre´
Hallo Nepumuk,
vielen Dank für den Code.
Auf 32Bit mit Office 365 funktioniert er... kann morgen aber erst mit 64Bit testen.
Bei dem Code von Michael konnte man zwar nur einen Teilstring eingeben aber ich denke es ist sicherer den kompletten Name vorzugeben.
Sollte der Test morgen negativ verlaufen, so würde ich spätestens bis 10°° mich hier noch einmal melden.
Wünsche noch einen schönen Abend!
MFG Andre

238 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige