So geht´s
kann ich in Excel2000 bei einer Arbeitsmappe mit mehreren
Tabellenblättern den Druckbereich so VOREINSTELLEN, dass z. B.
nach Druckbefehl die erste Seite (nicht die 2. und nicht die
3.) von Tabelle1, dann die erste von Tabelle2 (ebenfalls nicht
die anderen von Tabelle2), dann die erste von Tabelle3
gedruckt wird und nun zu drucken aufhört, obwohl noch Tabelle4
und 5 da sind.
Ich meine damit wirklich voreinstellen, damit diese Art des
Drucks immer automatisch nach Öffnen der Datei, bearbeiten und
Druckbefehl so wie beschrieben abläuft.
Hallo Interpat,
also Teil 1 ist leicht zu lösen, indem Du einfach im geöffneten Dokument mit Maus und Umschalt-Taste die Tabellenblätter 1 bis 3 markierst (Reiter am unteren Rand), auf „Drucken“ gehst, „Ausgewählte Blätter“ aktivierst und „Seiten 1 bis 1“ angibst.
Sollten allerdings mal andere Seiten hinzukommen (also nicht immer nur die erste Seite), kann dieses Makro hier weiterhelfen:
Option Explicit
Option Base 1
'Makro von Kristian Zarse für Wer-Weiss-Was, 09.11.02
Sub Drucken()
Dim Tabelle As Variant
Dim Seiten As Variant
Dim M As String
Dim NurVorschau As Boolean
NurVorschau = (MsgBox("Keine Seitenvorschau, sondern richtig drucken?", \_
vbYesNo + vbDefaultButton2, \_
"Druckabfrage") \_
vbYes)
M = ""
Tabelle = 1 'kann Tabellen-Nummer oder Tabellen-Name sein (deshalb Variant-Datentyp)
Seiten = Array(1) 'Nummern der zu druckenden Seiten
M = M & Ausdrucken(Tabelle, Seiten, NurVorschau)
Tabelle = "Tabelle2"
Seiten = Array(1)
M = M & Ausdrucken(Tabelle, Seiten, NurVorschau)
Tabelle = 3
Seiten = Array(1)
M = M & Ausdrucken(Tabelle, Seiten, NurVorschau)
Tabelle = 4
Seiten = Array(1, 3)
M = M & Ausdrucken(Tabelle, Seiten, NurVorschau)
Tabelle = "Tabelle5"
Seiten = Array(1, 3, 4, 5)
M = M & Ausdrucken(Tabelle, Seiten, NurVorschau)
'Diesen 3-Zeilen-Block entsprechend oft wiederholen und anpassen
MsgBox M
End Sub 'Drucken
Private Function Ausdrucken(varTabelle As Variant, arrSeiten As Variant, Optional booNurVorschau As Boolean) As String
Dim M As String
Dim s As Byte
Ausdrucken = ""
For s = 1 To UBound(arrSeiten)
M = "Tabelle/Seite: " & varTabelle & "/" & arrSeiten(s) & " --- "
On Error Resume Next
Sheets(varTabelle).PrintOut From:=arrSeiten(s), To:=arrSeiten(s), Copies:=1, Preview:=booNurVorschau
If Err.Number 0 Then M = M & Err.Description Else M = M & "gedruckt"
On Error GoTo 0
Ausdrucken = Ausdrucken & M & vbCr 'Zeilenumbruch
Next s
End Function 'Ausdrucken
Damit kannst Du auch das Ganze automatisieren, indem Du nämlich das „Drucken“ aus der Prozedur „WorkbookOpen“ oderso aufrufst, die, falls sie existiert, automatisch beim Öffnen ausgeführt wird. Wenn Du das brauchst, gucke ich nochmal nach. Sind nur drei Zeilen, aber bevor ich hier was falsches tippe …
Kristian