Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

Drucker auswählen

Drucker auswählen
Benedikt
Guten Abend zusammen
Zum ausdrucken als PDF sollte ich den Standarddrucker wechseln
Mit Druckerdialog und manuell auswählen klappt das :
Application.Dialogs(9).Show
Range("$B$3:Total").Select
Selection.PrintOut
Gerne würde ich aber ohne Dialogfeld arbeiten aber so geht das nicht:
Application.Printer = Application.Printers("Aloaha PDF Drucker")
Range("$B$3:Total").Select
Selection.PrintOut
Vielen Dank für Hilfe und einen schönen Abend

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Drucker auswählen
01.08.2010 00:06:49
Ramses
Hallo
Es muss auch der Druckeranschluss mit übergeben werden.
Probier mal das hier
'*****************************
'Drucker ändern
Sub StartDruckerSetting()
    If Change_Printer_Setting("Adobe PDF") = True Then
        MsgBox "Aktueller Drucker ist " & Application.ActivePrinter, vbInformation + vbOKOnly, "Änderung"
    Else
        MsgBox "Drucker konnte nicht gefunden werden", vbCritical + vbOKOnly, "Änderung"
    End If
End Sub

Function Change_Printer_Setting(strDruckerName As String) As Boolean
    Dim i As Integer, conPort As String
    Dim oldPrinter As String
    oldPrinter = Application.ActivePrinter
    On Error Resume Next
    'Hauruck Methode
    'Fehler treten auf wenn der Anschluss nicht bekannt ist
    'Zuweisungsschleife starten
    '99 Anschlüsse sollten reichen :-)
    
    For i = 1 To 99
        conPort = Format(i, "00")
        Application.ActivePrinter = strDruckerName & " auf Ne" & conPort & ":"
        If Application.ActivePrinter <> oldPrinter Then
            Change_Printer_Setting = True
            Exit Function
        End If
    Next i
End Function
'Ende Code Sequenz
'**********************************************

Gruss Rainer
Anzeige
Geht das nicht einfacher?
01.08.2010 06:46:28
Benedikt
Vielen lieben Dank für deinen Code, aber für mich ist das zu kompliziert.
AW: Geht das nicht einfacher?
01.08.2010 11:38:16
ransi
HAllo Benedikt
Geht das nicht einfacher?
Also mit einem 2-Zeiler ist sowas nicht zumachen !
Versuch mal die Public Sub Aufruf() nachzuvollziehen.
Option Explicit

Public Sub Aufruf()
Dim Alter_Drucker
Alter_Drucker = ActivePrinter 'Derzeitigen Standarddrucker merken
Call PDF_Drucker_als_Standarddrucker 'Umschalten auf PDF-Drucker
Sheets("Tabelle1").Range("B1:B10").PrintOut 'Drucken
ActivePrinter = Alter_Drucker 'Zurücksetzen auf alten Standarddrucker
End Sub


Public Sub PDF_Drucker_als_Standarddrucker()
Dim WSHNetwork As Object
Dim Alle_Drucker
Dim I As Integer
Set WSHNetwork = CreateObject("WScript.Network")
Set Alle_Drucker = WSHNetwork.EnumPrinterConnections
For I = 0 To Alle_Drucker.Count - 1 Step 2
    ' Z.B. PDF-Drucker als ActivePrinter setzen
    If UCase(Alle_Drucker.Item(I + 1)) Like "*PDF*" Then
        WSHNetwork.setdefaultprinter Alle_Drucker.Item(I + 1)
        Exit For
    End If
Next
End Sub


ransi
Anzeige
Sorry ist wohl falsch rübergekommen
01.08.2010 12:38:20
Benedikt
Hallo Ransi
Das "geht das nicht einfacher?" ist wohl in den falschen Hals geraten. Mir ist klar das für solche Profis wie Ihr das seid, nicht einleuchtet das ein Laie mit "WSHNetwork etc." nicht ganz klar kommt. Und wenn der Jahrgang ebenfalls noch fortschreitet geht es nicht mehr so einfach. Das Problem an solch ausführlichen Codes ist, das ich das nicht verstehe und entsprechend keinen einfluss auf das geschehen mehr habe, sprich es ist nicht möglich etwas zu Ändern. Also Sorry wenn etwas falsch daher gekommen ist
Nachfolgende "Bastelei" funktioniert auch, nur muss der PDF Drucker manuel aus dem Dialogfeld geöffnet werden. Und das war eigentlich die Frage wie das "Application.Dialogs(9).Show" umgangen werden könnte
Dim Drucker As String
Drucker = Application.ActivePrinter
Application.Dialogs(9).Show
Range("$B$3:Total").Select
Selection.PrintOut
Unload Me
Application.ActivePrinter = Drucker
End Sub
Anzeige
AW: Sorry ist wohl falsch rübergekommen
01.08.2010 12:53:59
Ramses
Hallo
Tut mir leid,...aber beide methoden sind ganz einfach, auch für ältere und unbedarfte.
In meinem Fall, ist es egal wo der Drucker angeschlossen ist. Ich geh alle Anschlüsse einfach durch. Wenns klappt ist gut, wenn nicht kommt die entsprechende Meldung. Das geht so schnell dass du es nicht merkst.
In deinem Codebeispiel sieht das so aus.
Dim Drucker As String
Drucker = Application.ActivePrinter
If Change_Printer_Setting("Adobe PDF") = True Then
MsgBox "Aktueller Drucker ist " & Application.ActivePrinter, vbInformation + vbOKOnly, "Änderung"
Else
MsgBox "Drucker konnte nicht gefunden werden", vbCritical + vbOKOnly, "Änderung"
End If
Range("$B$3:Total").Select
Selection.PrintOut
Unload Me
Application.ActivePrinter = Drucker
End Sub
In Ransis Beispiel werden die installierten Drucker aus der Registry ausgelesen und geprüft ob irgendwo PDF in der Druckerbezeichnung vorkommt. Der Drucker wird dann als aktiv gesetzt. Kann aber sein, dass wenn mehrere PDF Drucker installiert sind, der Druck nicht unbedingt auf dem Drucker ausgegeben wird denn du erwartest. Wenn es ein speizifischer Drucker sein soll, dann musst du das "*PDF*" entsprechend detaillieren.
In deinem Codebeispiel eingebaut schaut das so aus
Dim Drucker As String
Drucker = Application.ActivePrinter
Call PDF_Drucker_als_Standarddrucker
Range("$B$3:Total").Select
Selection.PrintOut
'wozu bitte soll das gut sein ?
'Das macht doch nur Sinn wenn eine UF aktiv ist.
Unload Me
Application.ActivePrinter = Drucker
End Sub
Wenn du den Drucker bzw. den anschluss genau kennst, den PDF-Drucker mal als aktiven setzen und dann gib mal im direktfenster des VB-Editors ein
Debug.Print ActivePrinter
Dann kommt sowas raus
Adobe PDF auf Ne05:
Dann kannst du den Drucker auch mit einer einfachen Codezeile umsetzen
Application.Activeprinter = "Adobe PDF auf Ne05:"
In deinem Codebeispiel sähe es dann so aus
Dim Drucker As String
Drucker = Application.ActivePrinter
Application.Activeprinter = "Adobe PDF auf Ne05:"
Range("$B$3:Total").Select
Selection.PrintOut
Unload Me
Application.ActivePrinter = Drucker
End Sub
Das wäre der einfachste Weg,... aber wie gesagt. Die Anschlüsse können variieren und sind nicht immer gleich weil Windows die Drucker selbst verwaltet.
Gruss Rainer
Anzeige
Drucker auswählen
01.08.2010 13:32:45
Anton
Hallo Benedikt,
teste mal:
  Dim Drucker As String
Drucker = Application.ActivePrinter
Range("$B$3:Total").PrintOut ActivePrinter:="Aloaha PDF Drucker"
Unload Me
Application.ActivePrinter = Drucker
mfg Anton
Drucker auswählen, Danke euch allen
01.08.2010 19:33:09
Benedikt
Also bleibt mir nur ein grosses Dankeschön für eure Hilfe.
Die ausführliche Erklärungen von Ramses haben sehr geholfen, d.h. es funzte wie gehoft.
Da der Vorschlag von Anton sehr kurz und für mich am besten lesbar war und zudem funktioniert hat, ist dieser mein Favorit.
Vielen lieben Dank euch allen für eure Zeit und Geduld.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige