Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.ActivePrinter

Forumthread: Application.ActivePrinter

Application.ActivePrinter
Heinz
Guten morgen im Forum
Im unteren Code drucke ich in PDF aus.
Nur habe ich Probleme mit der Rückstellung auf den Standartdrucker.
Gibt es nicht eine Möglichkeit,, Sinngemäß:
Makro Ausführen -> Standarddrucker abschalten -> PDF Drucken -> Standarddrucker einschalten.
Gruß
Heinz
Public Sub PDF_Drucker_Einstellen()
Dim Mywsh
Dim Druckers
Dim i
Set Mywsh = CreateObject("WScript.Network")
Set Druckers = Mywsh.EnumPrinterConnections
For i = 0 To Druckers.Count - 1 Step 2
If LCase(Druckers.Item(i + 1)) Like "*" & "pdf" & "*" Then
Mywsh.SetDefaultPrinter Druckers.Item(i + 1)
Exit For
End If
Next
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = "Brother HL-5130"
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Application.ActivePrinter
07.02.2011 07:59:46
Hajo_Zi
Hallo Heinz,
dies ist für Word, geht aber in Excel analog.
Fax mit stereotypen, bewährten Mimik ansprechen
Sub Faxen()
savPrinter = ActivePrinter		' aktuellen Drucker auslesen
ActivePrinter = "WinFax Pro 9.0"	' anderen Drucker einstellen
ActiveDocument.PrintOut Background:=False	' actives Dokument drucken in Word
ActivePrinter = savPrinter				' Drucker wieder zurückstellen
End Sub

Anzeige
AW: Application.ActivePrinter
07.02.2011 08:18:37
Heinz
Guten morgen Hajo
Bekomme leider trotzdem einen Fehler,das die Methode active Printer fehlgeschlagen ist.
Mein Standarddrucker ist Brother HL-5130
Mein PDF Drucker ist Bullzip PDF Printer
Gruß
Heinz
Sub Faxen()
savPrinter = ActivePrinter      ' aktuellen Drucker auslesen
ActivePrinter = "Brother HL-5130" ' anderen Drucker einstellen
ActiveDocument.PrintOut Background:=False   ' actives Dokument drucken in Word
ActivePrinter = savPrinter              ' Drucker wieder zurückstellen
End Sub

Anzeige
AW: Application.ActivePrinter
07.02.2011 08:43:27
Heinz
Hallo Hajo
So funktioniert es.
Danke
Heinz
Public Sub PDF_Drucker_Einstellen()
Dim sDruckerAktuell As String
sDruckerAktuell = Application.ActivePrinter 'Aktuellen Drucker merken
Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = sDruckerAktuell
End Sub

Anzeige
;
Anzeige

Infobox / Tutorial

Anwendung von Application.ActivePrinter in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Standarddrucker in Excel VBA zu ändern und anschließend ein Dokument auszudrucken, kannst du folgende Schritte befolgen:

  1. Aktuellen Drucker speichern: Bevor du den Drucker wechselst, speichere den aktuellen Drucker mit Application.ActivePrinter.
  2. Drucker wechseln: Setze den gewünschten Drucker, z.B. den Bullzip PDF Drucker.
  3. Drucken: Verwende ActiveWindow.SelectedSheets.PrintOut, um das aktive Blatt auszudrucken.
  4. Drucker zurücksetzen: Stelle den ursprünglichen Drucker wieder her.

Hier ist ein Beispielcode, der diese Schritte umsetzt:

Public Sub PDF_Drucker_Einstellen()
    Dim sDruckerAktuell As String
    sDruckerAktuell = Application.ActivePrinter ' Aktuellen Drucker merken
    Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:" ' PDF Drucker einstellen
    ActiveWindow.SelectedSheets.PrintOut Copies:=1 ' Dokument drucken
    Application.ActivePrinter = sDruckerAktuell ' Drucker wieder zurückstellen
End Sub

Häufige Fehler und Lösungen

  1. Fehler beim Ändern des Druckers: Wenn du die Fehlermeldung "Methode ActivePrinter fehlgeschlagen" erhältst, überprüfe, ob der Druckername korrekt ist. Achte darauf, dass der Drucker installiert und aktiv ist.

  2. Drucker wird nicht zurückgesetzt: Wenn der Drucker nicht zurückgesetzt wird, stelle sicher, dass der Code zur Wiederherstellung des Druckers nach dem Drucken korrekt ausgeführt wird.


Alternative Methoden

Anstatt den Drucker manuell zu ändern, kannst du auch eine Funktion erstellen, die den Drucker automatisch wechselt, abhängig von bestimmten Bedingungen. Hier ist ein Beispiel, um zu zeigen, wie du einen anderen Drucker für den Druck auswählen kannst:

Public Sub Drucker_wechseln()
    Dim aktuellerDrucker As String
    aktuellerDrucker = Application.ActivePrinter

    ' Bedingungen für Druckerwechsel
    If Worksheets("Tabelle1").Range("A1").Value = "PDF" Then
        Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:"
    Else
        Application.ActivePrinter = "Brother HL-5130"
    End If

    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Application.ActivePrinter = aktuellerDrucker
End Sub

Praktische Beispiele

Hier sind einige praxisnahe Beispiele zur Verwendung von Application.ActivePrinter in Excel VBA:

  1. PDF-Drucker nutzen:

    Public Sub PDF_Drucken()
       Dim sDrucker As String
       sDrucker = Application.ActivePrinter
       Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1
       Application.ActivePrinter = sDrucker
    End Sub
  2. Druckaufträge an WinFax Pro:

    Public Sub Faxen()
       Dim savPrinter As String
       savPrinter = Application.ActivePrinter
       Application.ActivePrinter = "WinFax Pro 9.0"
       ActiveDocument.PrintOut Background:=False
       Application.ActivePrinter = savPrinter
    End Sub

Tipps für Profis

  • Druckerkennung optimieren: Verwende WScript.Network zur automatischen Erkennung und Auswahl des Druckers, um Fehler zu minimieren.
  • Debugging: Nutze Debug.Print Application.ActivePrinter, um den aktuell aktiven Drucker während der Ausführung deines Codes zu überprüfen.
  • Dokumentation: Halte deinen Code gut dokumentiert, insbesondere wenn du mit mehreren Druckern arbeitest, um Verwirrung zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Standarddrucker in Excel VBA permanent ändern?
Du kannst den Standarddrucker über die Windows-Systemsteuerung ändern, da VBA lediglich den aktuellen Drucker für die Sitzung anpasst.

2. Was mache ich, wenn ich keine Drucker sehe?
Stelle sicher, dass deine Drucker ordnungsgemäß installiert sind und überprüfe die Verbindung. Verwende WScript.Network zur Auflistung der verfügbaren Drucker.

3. Kann ich mehrere Drucker in meinem VBA-Skript verwenden?
Ja, du kannst mehrere Drucker verwenden, indem du die Application.ActivePrinter-Eigenschaft mehrmals änderst, je nach Bedarf. Achte darauf, die Drucker nach dem Drucken wieder zurückzusetzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige