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

Druckreihenfolge per VBA

Forumthread: Druckreihenfolge per VBA

Druckreihenfolge per VBA
19.11.2008 16:52:00
MAS
Ich habe ein Problem beim Drucken per VBA
Ich möchte:
den Inhalt von mehreren Blättern drucken
dabei sollen diese fortlaufend numeriert sein
die Blätter sollen in einer bestimmten Reihenfolge kommen
Per Aufzeichnung kriege ich es hin, dass alle Blätter gedruckt werden
Dabei wäre auch die Numerierung ok
Ich bekomme es aber nicht hin auf die Reihenfolge Einfluss zu nehmen
z.B. zuerst Tabelle2, dann Tabelle3 und zum Schluß Tabelle1
Hat da von euch jemand einen Tipp?
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Sheets("Tabelle1").Activate
Application.ActivePrinter = "FreePDF XP auf Ne05:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"FreePDF XP auf Ne05:", Collate:=True
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Druckreihenfolge per VBA festlegen
19.11.2008 18:08:00
NoNet
Hallo MAS,
leider kann man die Druckreihenfolge der zu druckenden Blätter nicht direkt festlegen, Excle druckt die Blätter immer in der Reihenfolge, in der sie im Blattregister erscheinen. Um die DRUCK-Reihenfolge zu ändern, musst Du die Reihenfolge der Tabellenblätter entsprechen anpassen. DAS wiederum kann man freilich per VBA erledigen (inkl. der Herstellung der urspünglichen Anordnung der Tabellenblätter).
Voraussetzung : die MAPPE (respektive: Fenster) darf nicht geschützt sein (also kein Arbeitsmappenschutz !) :
VBA-Code:
Sub BlaetterInBeliebigerReihenfolgeAusdrucken()
    '19.11.2008, NoNet
    Dim arrBlaetter, arrOriginal()
    Dim intNr As Integer
    'Hier die gewünschte Druckreihenfolge angeben :
    arrBlaetter = Array("Tabelle3", "Tabelle1", "Tabelle2")
    ReDim Preserve arrOriginal(Sheets.Count - 1)
    'Zunächst die ursprüngliche Reihenfolge speichern :
    For intNr = 0 To Sheets.Count - 1
        arrOriginal(intNr) = Sheets(intNr + 1).Name
    Next
    'Blätter in gewünschte Reihenfolge verschieben :
    For intNr = 0 To UBound(arrBlaetter)
        Sheets(arrBlaetter(intNr)).Move before:=Sheets(intNr + 1)
    Next
    'Gewünschte Blätter markieren :
    For intNr = 0 To UBound(arrBlaetter)
        Sheets(intNr + 1).Select False
    Next
    'Markierte Blätter ausdrucken :
    Application.ActivePrinter = "FreePDF XP auf Ne05:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "FreePDF XP auf Ne05:", Collate:=True
'    Application.ActivePrinter = "Adobe PDF auf Ne04:"
'    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
'        "Adobe PDF auf Ne04:", Collate:=True
    'Ursprüngliche Reihenfolge wieder herstellen :
    For intNr = Sheets.Count - 2 To 0 Step -1
        Sheets(arrOriginal(intNr)).Move before:=Sheets(arrOriginal(intNr + 1))
    Next
End Sub
Gruß, NoNet
AW: Druckreihenfolge per VBA festlegen
MAS

Hallo NoNet,
vielen Dank für die rasche Info und das zugehörige Coding.
Noch nicht getetest - folgt aber in Kürze
Schönen Abend noch
Anzeige
AW: Druckreihenfolge per VBA festlegen
19.11.2008 21:04:00
MAS
Hallo NoNet,
vielen Dank für die rasche Info und das zugehörige Coding.
Noch nicht getetest - folgt aber in Kürze
Schönen Abend noch
;
Anzeige

Infobox / Tutorial

Druckreihenfolge in Excel per VBA anpassen


Schritt-für-Schritt-Anleitung

Um die Druckreihenfolge in Excel per VBA zu ändern, kannst du den folgenden VBA-Code nutzen. Dieser ermöglicht es, die Reihenfolge der Blätter beim Drucken festzulegen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub BlaetterInBeliebigerReihenfolgeAusdrucken()
       Dim arrBlaetter, arrOriginal()
       Dim intNr As Integer
    
       ' Hier die gewünschte Druckreihenfolge angeben:
       arrBlaetter = Array("Tabelle3", "Tabelle1", "Tabelle2")
       ReDim Preserve arrOriginal(Sheets.Count - 1)
    
       ' Zunächst die ursprüngliche Reihenfolge speichern:
       For intNr = 0 To Sheets.Count - 1
           arrOriginal(intNr) = Sheets(intNr + 1).Name
       Next
    
       ' Blätter in gewünschte Reihenfolge verschieben:
       For intNr = 0 To UBound(arrBlaetter)
           Sheets(arrBlaetter(intNr)).Move before:=Sheets(intNr + 1)
       Next
    
       ' Gewünschte Blätter markieren:
       For intNr = 0 To UBound(arrBlaetter)
           Sheets(intNr + 1).Select False
       Next
    
       ' Markierte Blätter ausdrucken:
       Application.ActivePrinter = "FreePDF XP auf Ne05:"
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
       "FreePDF XP auf Ne05:", Collate:=True
    
       ' Ursprüngliche Reihenfolge wieder herstellen:
       For intNr = Sheets.Count - 2 To 0 Step -1
           Sheets(arrOriginal(intNr)).Move before:=Sheets(arrOriginal(intNr + 1))
       Next
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um die Druckreihenfolge zu ändern.


Häufige Fehler und Lösungen

  • Fehler: "Die aktive Mappe ist geschützt."

    • Lösung: Stelle sicher, dass kein Arbeitsmappenschutz aktiviert ist. Du musst den Schutz aufheben, bevor du das Skript ausführst.
  • Fehler: "Der Drucker kann nicht gefunden werden."

    • Lösung: Überprüfe den Druckernamen in Application.ActivePrinter. Achte darauf, dass der Drucker korrekt installiert ist.

Alternative Methoden

Es gibt auch andere Möglichkeiten, die Druckreihenfolge in Excel zu ändern:

  1. Manuelles Ändern: Du kannst die Reihenfolge der Tabellenblätter im Blattregister ändern, indem du die Blätter einfach per Drag-and-Drop in die gewünschte Position ziehst.
  2. Drucken als PDF: Wenn du die druckreihenfolge ändern pdf möchtest, kannst du den Drucker auf "Microsoft Print to PDF" einstellen und denselben VBA-Code verwenden, um die Reihenfolge zu steuern.

Praktische Beispiele

Hier sind einige Beispiele, wie du die Druckreihenfolge ändern kannst:

  • Beispiel 1: Wenn du die Blätter Januar, Februar, März in dieser Reihenfolge drucken möchtest, ändere die Zeile im Code zu:

    arrBlaetter = Array("Januar", "Februar", "März")
  • Beispiel 2: Für eine andere Reihenfolge, wie Bericht, Analyse, Daten, passe den Code an:

    arrBlaetter = Array("Bericht", "Analyse", "Daten")

Tipps für Profis

  • Nutze Application.DisplayAlerts = False, um Alerts während des Druckens zu unterdrücken.
  • Speichere dein Dokument regelmäßig, während du mit VBA arbeitest, um Datenverluste zu vermeiden.
  • Teste deinen Code zuerst mit einer Kopie der Arbeitsmappe, um unerwünschte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich die Druckreihenfolge auch für PDF-Dateien ändern?
Ja, indem du den VBA-Code anpasst und den Drucker auf "Microsoft Print to PDF" änderst.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen?
Der Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren. Achte darauf, dass du die richtige Druckereinstellung verwendest.

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