ich suche den Port des Standarddruckers (bei mir ein "HP LaserJet M1120 MFP"), dazu gibt es verschiedene MÖglichkeiten, ich hab mächtig in der Recherche gesucht - und gefunden. Allerdings gibt's bei mir ein Problem, der richtige Port wird nicht erkannt:
Wenn ich im Druckerdialog den HP als aktiven Drucker einstelle und das mit dem Rekorder aufzeichne, bekomme ich:
Application.ActivePrinter = "HP LaserJet M1120 MFP auf Ne03:"
ABER:
beim Auslesen des Standarddruckers mit verschiedenen Codes, die ich in der Recherche gefunden habe, z. B. damit:
Option Explicit
Private Declare Function GetProfileString Lib "kernel32" _
Alias "GetProfileStringA" (ByVal lpAppName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) _
As Long
Sub DruckerAnzeigen()
Dim PrinterName$, Driver$, Port$
Call GetStdPrinterName(PrinterName, Driver, Port)
'MsgBox "Standarddrucker: " & vbLf & PrinterName & vbLf & Driver & vbLf & Port
MsgBox PrinterName & " auf " & Port
End Sub
Private Sub GetStdPrinterName(PrinterName$, Driver$, Port$)
Dim Buffer$, r&, x&, y&
Buffer = Space(8192)
r = GetProfileString("windows", "Device", "", Buffer, Len(Buffer))
If r Then
Buffer = Mid(Buffer, 1, r)
x = InStr(Buffer, ",")
PrinterName = Mid(Buffer, 1, x - 1)
y = InStr(x + 1, Buffer, ",")
Driver = Mid(Buffer, x + 1, y - x - 1)
Port = Mid(Buffer, y + 1)
Else
PrinterName = ""
Driver = ""
Port = ""
End If
End Sub
wird als Port Ne02: ermittelt.
Wenn ich dann im Makro mit dem ermittelten "Port = Ne02:" die Anweisung
Application.ActivePrinter = PrinterName & " auf " & Port
verwende, gibt's ne Fehlermeldung ("Anwendungs- oder objektdefinierter Fehler").
Setz ich davor noch:
Port = "Ne03:"
dann stimmt's.
Wie kann ich den Port des Standarddruckers richtig ermitteln?
Danke schonmal und Grüße
Franz