Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
892to896
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
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Druckerports

Druckerports
12.08.2007 10:43:00
Harald
Hallo,
gestern bekam ich von Nepumuk folgenden Code, um meine Druckerports zu finden:
siehe auch: https://www.herber.de/forum/messages/895921.html
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

Public Sub Test()
Dim strPrinterName As String, strPort As String
strPrinterName = "Adobe PDF" 'Name des Druckers
Call GetStdPrinterName(strPrinterName, strPort)
Debug.Print strPrinterName & " auf " & strPort
End Sub



Private Sub GetStdPrinterName(strPrinterName As String, strPort As String)
Dim strBuffer As String
Dim lngReturn As Long
strBuffer = Space$(8192)
lngReturn = GetProfileString("windows", "Device", strPrinterName, strBuffer, Len(strBuffer)) _
If lngReturn Then
strBuffer = Mid$(strBuffer, 1, lngReturn)
strPrinterName = Split(strBuffer, ",")(0)
strPort = Split(strBuffer, ",")(2)
End If
End Sub


Nun habe ich festgestellt, dass dabei nicht der Port des gewählten Druckers (Adobe PDF) angegeben wird, sondern der Port des Standarddruckers! Auch bekommt strPrinterName den Namen des Standarddruckers.
Ich brauche aber den Port-Wert eines neu gewählten Druckers (im Beispiel Adobe PDF bzw. bei mir Lexmark E340). Leider hatte ich den Beitrag von gestern schon geschlossen, deshalb der neue Beitrag.
Wer kann mir weiterhelfen? Meine VBA-Kenntnisse sind nur gering.
m.f.g.
Harald

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckerports
ransi
HAllo HArald
Ich kann nur raten was du eigentlich vorhast.
So wie ich das lese möchtest du eine Datei als PDF drucken.
Wenn dem so ist, versuche mal diesen Code:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Public Sub Drucken_als_PDF()
Dim SavPrinter
Dim WSHNetwork
Dim Alle_Drucker
Dim I As Integer
SavPrinter = ActivePrinter
Set WSHNetwork = CreateObject("WScript.Network")
Set Alle_Drucker = WSHNetwork.EnumPrinterConnections
For I = 1 To Alle_Drucker.Count Step 2
    'pdf-Drucker suchen
    If LCase(Alle_Drucker.Item(I)) Like "*pdf*" Then
        WSHNetwork.SetDefaultPrinter Alle_Drucker.Item(I)
        Exit For
    End If
Next
'ActiveSheet.PrintOut
ActivePrinter = SavPrinter
End Sub

ransi

Anzeige
AW: Druckerports
12.08.2007 11:50:00
Harald
Hallo ransi,
ich möchte keine PDF drucken - das war nur ein Beispiel von Nepumuk.
Das Problem hatte ich gestern um 16:17 Beschrieben: https://www.herber.de/forum/archiv/892to896/t895909.htm
Ich möchte aus einer Combobox einen Drucker auswählen, auf den ich dann drucke.
Mit meinem Code (siehe im Link) bekomme ich zwar die Drucker in die Combobox, aber dort steht nicht der Port des Druckers dabei, und deshalb bekomme ich immer einen Laufzeitfehler (wie im Link beschrieben).
Standarddrucker ist normalerweise der "Epson Stylus R300 auf Ne03:". Wenn ich nun aber den Lexmark auswähle, bekomme ich nur "Lexmark E340" statt "Lexmark E340 auf ..."
Ich hoffe, dass dir der Link oben weiterhilft.
m.f.g.
Harald

Anzeige
AW: Druckerports
ransi
HAllo Harald
Dann versuche mal diesen Code:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub Faxen()
Dim SavPrinter
Dim WSHNetwork
SavPrinter = ActivePrinter
Set WSHNetwork = CreateObject("WScript.Network")
WSHNetwork.setdefaultprinter (ComboBox1.Value)
ActiveSheet.PrintOut
ActivePrinter = SavPrinter
End Sub

savPrinter ist der ActivePrinter.
Diese Zeile:
WSHNetwork.setdefaultprinter (ComboBox1.Value)
macht das gleiche wie:
ActivePrinter=irgendwas
Wenn es das nicht ist, wie füllst du die Combobox ?
ransi

Anzeige
AW: Druckerports
12.08.2007 12:49:00
Harald
Hallo ransi,
jetzt kommt die Fehlermeldung nicht mehr! Vielen Dank für deine Hilfe!
Noch eine Frage: Wenn ich ein bestimmtes Arbeitsblatt ausdrucken möchte - muss ich das dann zuerst aktivieren, oder geht das auch einfach mit Sheets("Blatt XYZ").PrintOut?
m.f.g.
Harald

AW: Druckerports
ransi
HAllo Harald
muss ich das dann zuerst aktivieren, oder geht das auch einfach mit Sheets("Blatt XYZ").PrintOut?
Probier es mal aus.
(

Sheets("Blatt XYZ").PrintOut 

funktioniert)
:-)
ransi

AW: Druckerports
12.08.2007 15:28:00
Harald
Danke!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige