Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktiven Drucker prüfen ob A3 möglich

Aktiven Drucker prüfen ob A3 möglich
08.04.2004 13:52:44
Tomtom
Hallo zusammen
Bei der Aufbereitung meines Druckoutputs möchte ich - wenn möglich - das A3-Format verwenden. Wie bringe ich es fertig, den aktiven Drucker zu prüfen, ob dieser das Format A3 überhaupt zur Verfügung stellt?
ActiveSheet.PageSetup.PaperSize = xlPaperA3
On Error ... funktioniert nicht!
"Laufzeitfehler '1004': die PaperSize-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden."
Besten Dank für eure Tipps!
Gruss Tomtom

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

Betreff
Datum
Anwender
Anzeige
AW: Aktiven Drucker prüfen ob A3 möglich
08.04.2004 15:23:24
Nepumuk
Hallo Tomtom,
hilft dir das weiter?


Option Explicit
Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As StringByVal lpPort As StringByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long
Private Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" (ByVal flags As LongByVal name As StringByVal Level As Long, pPrinterEnum As LongByVal cdBuf As Long, pcbNeeded As Long, pcReturned As LongAs Long
Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyA" (ByVal lpString1 As StringByVal lpString2 As LongAs Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As LongAs Long
Public Sub Unterstuezte_Papierformate()
    Dim Ret As Long, PaperSizes() As Integer, Papersize As String, Cnt As Long, Printername As String
    Printername = Printer(ActivePrinter)
    Ret = DeviceCapabilities(Printername, "LPT1", 2, ByVal 0&, ByVal 0&)
    ReDim PaperSizes(1 To Ret) As Integer
    Call DeviceCapabilities(Printername, "LPT1", 2, PaperSizes(1), ByVal 0&)
    Papersize = "From " & Printername & vbLf & "supported papersizes:" & vbLf & vbLf
    For Cnt = 1 To Ret
        Select Case PaperSizes(Cnt)
            Case 1: Papersize = Papersize & "Letter 8 1/2 x 11 in" & vbLf
            Case 2: Papersize = Papersize & "Letter Small 8 1/2 x 11 in" & vbLf
            Case 3: Papersize = Papersize & "Tabloid 11 x 17 in" & vbLf
            Case 4: Papersize = Papersize & "Ledger 17 x 11 in" & vbLf
            Case 5: Papersize = Papersize & "Legal 8 1/2 x 14 in" & vbLf
            Case 6: Papersize = Papersize & "Statement 5 1/2 x 8 1/2 in" & vbLf
            Case 7: Papersize = Papersize & "Executive 7 1/4 x 10 1/2 in" & vbLf
            Case 8: Papersize = Papersize & "A3 297 x 420 mm" & vbLf
            Case 9: Papersize = Papersize & "A4 210 x 297 mm" & vbLf
            Case 10: Papersize = Papersize & "A4 Small 210 x 297 mm" & vbLf
            Case 11: Papersize = Papersize & "A5 148 x 210 mm" & vbLf
            Case 12: Papersize = Papersize & "B4 250 x 354" & vbLf
            Case 13: Papersize = Papersize & "B5 182 x 257 mm" & vbLf
            Case 14: Papersize = Papersize & "Folio 8 1/2 x 13 in" & vbLf
            Case 15: Papersize = Papersize & "Quarto 215 x 275 mm" & vbLf
            Case 16: Papersize = Papersize & "10x14 in" & vbLf
            Case 17: Papersize = Papersize & "11x17 in" & vbLf
            Case 18: Papersize = Papersize & "Note 8 1/2 x 11 in" & vbLf
            Case 19: Papersize = Papersize & "Envelope #9 3 7/8 x 8 7/8" & vbLf
            Case 20: Papersize = Papersize & "Envelope #10 4 1/8 x 9 1/2" & vbLf
            Case 21: Papersize = Papersize & "Envelope #11 4 1/2 x 10 3/8" & vbLf
            Case 22: Papersize = Papersize & "Envelope #12 4 \276 x 11" & vbLf
            Case 23: Papersize = Papersize & "Envelope #14 5 x 11 1/2" & vbLf
            Case 24: Papersize = Papersize & "C size sheet" & vbLf
            Case 25: Papersize = Papersize & "D size sheet" & vbLf
            Case 26: Papersize = Papersize & "E size sheet" & vbLf
            Case 27: Papersize = Papersize & "Envelope DL 110 x 220mm" & vbLf
            Case 28: Papersize = Papersize & "Envelope C5 162 x 229 mm" & vbLf
            Case 29: Papersize = Papersize & "Envelope C3  324 x 458 mm" & vbLf
            Case 30: Papersize = Papersize & "Envelope C4  229 x 324 mm" & vbLf
            Case 31: Papersize = Papersize & "Envelope C6  114 x 162 mm" & vbLf
            Case 32: Papersize = Papersize & "Envelope C65 114 x 229 mm" & vbLf
            Case 33: Papersize = Papersize & "Envelope B4  250 x 353 mm" & vbLf
            Case 34: Papersize = Papersize & "Envelope B5  176 x 250 mm" & vbLf
            Case 35: Papersize = Papersize & "Envelope B6  176 x 125 mm" & vbLf
            Case 36: Papersize = Papersize & "Envelope 110 x 230 mm" & vbLf
            Case 37: Papersize = Papersize & "Envelope Monarch 3.875 x 7.5 in" & vbLf
            Case 38: Papersize = Papersize & "6 3/4 Envelope 3 5/8 x 6 1/2 in" & vbLf
            Case 39: Papersize = Papersize & "US Std Fanfold 14 7/8 x 11 in" & vbLf
            Case 40: Papersize = Papersize & "German Std Fanfold 8 1/2 x 12 in" & vbLf
            Case 41: Papersize = Papersize & "German Legal Fanfold 8 1/2 x 13 in" & vbLf
       End Select
    Next
    MsgBox Papersize
End Sub
Private Function Printer(Printername As StringAs String
    Dim longbuffer() As Long, numbytes As Long, lngCnt As Integer
    Dim numneeded As Long, numprinters As Long, Retval As Long
    numbytes = 3076
    ReDim longbuffer(0 To numbytes / 4) As Long
    Retval = EnumPrinters(&H2, "", 1, longbuffer(0), numbytes, numneeded, numprinters)
    If Retval = 0 Then
        numbytes = numneeded
        ReDim longbuffer(0 To numbytes / 4) As Long
        Retval = EnumPrinters(&H2, "", 1, longbuffer(0), numbytes, numneeded, numprinters)
        If Retval = 0 Then
            MsgBox "Fehler bei der Druckersuche. Programmabbruch.", 16, "Warnung"
            End
        End If
    End If
    For lngCnt = 0 To numprinters - 1
        Printer = Space(lstrlen(longbuffer(4 * lngCnt + 2)))
        lstrcpy Printer, longbuffer(4 * lngCnt + 2)
        If InStr(1, Printername, Printer) <> 0 Then Exit Function
    Next
End Function

     Code eingefügt mit Syntaxhighlighter 2.5

Gruß
Nepumuk
Anzeige
AW: Aktiven Drucker prüfen ob A3 möglich
08.04.2004 16:34:35
Tomtom
Hallo Nepumuk
Besten Dank für deinen ausführlichen Code.
Habe ihn getestet und bekomme auf der Zeile
"ReDim PaperSizes(1 To Ret) As Integer"
folgenden Fehler
"Laufzeitfehler '9': Index ausserhalb des gültigen Bereichs"
Dein Code ist ausserdem auf "LPT1" ausgerichtet. Ich muss aber meine Prüfung auf verschiedene Netzwerkdrucker laufen lassen ...
Herzlichen Dank und Gruss
Tomtom
AW: Netzwerkdrucker prüfen ob A3 möglich
08.04.2004 16:57:22
Nepumuk
Hallo Tomtom,
das ist klar, mit Netzwerkdruckern funktioniert der Code nicht. Da bin ich selbst noch auf der Suche, wie ich diesen Informationen entlocken kann.
Gruß
Nepumuk
Anzeige
AW: Netzwerkdrucker prüfen ob A3 möglich
08.04.2004 17:02:19
Tomtom
Hallo Nepumuk
Alles klar.
Trotzdem besten Dank.
Gruss Tomtom
Tolle Sache das! oT
08.04.2004 17:13:02
Kurt
,,

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige