Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Tabellenblatt an bestimmten Drucker

VBA Tabellenblatt an bestimmten Drucker
Lunatic82
Hallo zusammen,
ich habe mal wieder ein Problem :) hab zwar schon gesucht aber noch nicht wirklich das richtige gefunden...
Ich habe eine Datei mit 3 Tabellenblättern.
In "Tabelle 1" werden Daten eingegeben aus denen dann in "Tabelle 2" und "Tabelle 3" ein Anschreiben bzw. eine Postkarte erstellt wird.
In "Tabelle 1" sollen zwei Schaltflächen sein mit denen man jeweils "Tabelle2" und "Tabelle3" direkt und ohne weitere Abfragen drucken kann.
Wobei "Tabelle2" auf dem Standard-Drucker (Netzwerkdrucker) ausgegeben werden soll (DINA4)
aber "Tabelle3" soll auf einem anderen Netzwerkdrucker (NAME: XYZ123 an ABC321) ausgegeben werden.
Der Netzwerkdrucker XYZ123 druckt nur im Postkartenformat.
Da meine VBA künste noch nicht so prickelnd sind wende ich mich wieder an EUCH :)
Vielen Dank für eure Hilfe!
Gruß Flo
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Tabellenblatt an bestimmten Drucker
26.01.2012 19:11:24
Lunatic82
Hallo ich habe jetzt folgendes gefunden:
Public Sub Rückschein_Drucken()
Dim Drucker$, I%
On Error GoTo Resume_Drucker
For I% = 1 To 30
Drucker$ = "\\xyz\CanonP4000 auf Ne" & Format(I%, "00") & ":"
Application.ActivePrinter = Drucker$
Sheets("Rückschein").PrintOut Copies:=1, Collate:=True
Exit For
Resume_Drucker:
Resume NxtDrucker
NxtDrucker:
Next I%
End Sub
Funktioniert super aber wie kann ich hier noch etwas einbauen, damit nach dieser Aktion wieder der standard drucker gewählt wird?
Der Standard drucker ist in diesem Fall der \\abc\HP4250 auf Ne?
Vielen DAnk!
Anzeige
AW: VBA Tabellenblatt an bestimmten Drucker
27.01.2012 12:21:20
Heiko
Moin Flo,
müßte so gehen, ungetestet.
Also alten Drucker merken, deine Schleife abarbeiten, alten Drucker wieder einsetzen.
Ist die Schleife wirklich notwendig, der Drucker sollte doch immer den gleichen Namen haben, oder wechselt der Name von 1 bis 30?!
Public Sub Rückschein_Drucken()
Dim strPostkartenDrucker As String, strStandardDrucker As String
Dim intI As Integer, intErrNumber As Integer
' Alte Einstellung sichern
strStandardDrucker = Application.ActivePrinter
For intI = 1 To 30
strPostkartenDrucker = "\\xyz\CanonP4000 auf Ne" & Format(intI, "00") & ":"
On Error Resume Next
Application.ActivePrinter = strPostkartenDrucker
intErrNumber = Err.Number
On Error GoTo 0
If intErrNumber = 0 Then
Sheets("Rückschein").PrintOut Copies:=1, Collate:=True
' Alte Einstellung wieder herstellen
Application.ActivePrinter = strStandardDrucker
Exit Sub
End If
Next intI
End Sub

Gruß Heiko
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Tabellenblatt an bestimmten Drucker senden


Schritt-für-Schritt-Anleitung

  1. Drucker und Tabellenblätter definieren: Stelle sicher, dass du die richtigen Namen für deine Drucker und Tabellenblätter verwendest. In diesem Beispiel nutzen wir "Tabelle1", "Tabelle2" und "Tabelle3".

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei)", wähle "Einfügen" und dann "Modul".

  4. VBA-Code einfügen: Kopiere den folgenden Code in das Modul:

    Public Sub DruckeTabs()
        Dim strStandardDrucker As String
        Dim strPostkartenDrucker As String
    
        ' Standarddrucker sichern
        strStandardDrucker = Application.ActivePrinter
    
        ' Drucker für Postkarte
        strPostkartenDrucker = "\\xyz\CanonP4000 auf Ne01:"
    
        ' Tabelle2 auf Standarddrucker drucken
        Application.ActivePrinter = strStandardDrucker
        Sheets("Tabelle2").PrintOut Copies:=1, Collate:=True
    
        ' Tabelle3 auf Postkarten-Drucker drucken
        Application.ActivePrinter = strPostkartenDrucker
        Sheets("Tabelle3").PrintOut Copies:=1, Collate:=True
    
        ' Zurück zum Standarddrucker
        Application.ActivePrinter = strStandardDrucker
    End Sub
  5. Schaltflächen erstellen: Gehe zurück zu deinem Excel-Dokument und füge Schaltflächen für die beiden Druckaktionen ein. Weise die DruckeTabs-Subroutine jeder Schaltfläche zu.

  6. Testen: Klicke auf die Schaltflächen, um sicherzustellen, dass die Tabellenblätter korrekt an die festgelegten Drucker gesendet werden.


Häufige Fehler und Lösungen

  • Fehler: "Drucker nicht gefunden": Überprüfe den Druckernamen auf Schreibfehler oder ob der Drucker online und verfügbar ist.

  • Problem: Drucker wechselt während des Druckens: Stelle sicher, dass du den Standarddrucker am Ende der Subroutine wiederherstellst.

  • Druckerwechsel funktioniert nicht: Überprüfe die Netzwerkverbindung zu den Druckern und stelle sicher, dass du die richtigen Berechtigungen hast.


Alternative Methoden

Eine alternative Methode, um Druckaufträge zu steuern, könnte die Verwendung von Excel-Funktionen wie Application.PrintOut sein. Hier ist ein Beispiel:

Application.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="\\xyz\CanonP4000 auf Ne01:"

Diese Methode ist nützlich, wenn du keine VBA-Schaltflächen verwenden möchtest und stattdessen direkt aus einer Zelle heraus drucken möchtest.


Praktische Beispiele

  1. Drucken von Rechnungen: Wenn du Rechnungen in "Tabelle2" hast und sie an einen bestimmten Drucker senden möchtest, kannst du den oben angegebenen Code verwenden und anpassen.

  2. Drucken von Berichten: Wenn du Berichte in "Tabelle3" hast, kannst du dieselbe Logik anwenden, um diese auf einem anderen Drucker zu drucken.


Tipps für Profis

  • Druckerstatus prüfen: Bevor du den Druckauftrag sendest, prüfe den Status des Druckers, um sicherzustellen, dass er bereit ist.

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um unerwartete Fehler zu handhaben, aber plane auch eine Rückmeldung für den Benutzer ein.

  • Druckvorschau nutzen: Vor dem Drucken ist es sinnvoll, eine Druckvorschau einzufügen, um sicherzustellen, dass alles korrekt aussieht.


FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Kopien eines Tabellenblatts drucken?
Antwort: Du kannst die Copies-Eigenschaft in der PrintOut-Methode anpassen. Beispiel: Sheets("Tabelle2").PrintOut Copies:=3.

2. Frage
Kann ich den Drucker während des Druckens wechseln?
Antwort: Ja, du kannst den Drucker in der Subroutine wechseln, achte aber darauf, die Application.ActivePrinter-Eigenschaft nach dem Drucken wiederherzustellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige