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

Druck via Makro von zwei Tabellenblättern

Druck via Makro von zwei Tabellenblättern
29.08.2014 21:25:36
zwei
Hallo,
ich habe neulich Hilfe von Franz bekommen: https://www.herber.de/forum/archiv/1376to1380/t1377667.htm
Ausgangspunkt ist ein Makro, dass Tabelle2 (Querformat) als Multi-Doc druckt und dabei ggf. den Drucktitel (mittlerweile 3 Zeilen) auf der letzten Seite auf zwei Zeilen reduziert und gleichzeitig das Umbrechen der letzten 17 Zeilen verhindert. Soweit ist alles perfekt!
Jetzt habe ich in Tabelle1 zwei Titelseiten im Hochformat (deswegen ein anderes Tabellenblatt) und möchte beide Tabellenblätter mittels eines Makros (oder auch ohne, falls das geht) ausdrucken - Seitenumbruch und Anpassung des Drucktitels funktionieren nun leider nicht mehr. Wer weiß Rat?
Sub Tabelle2()
Call Tabelle1_Titel_drucken
Call Tabelle2_Drucktitel_bedingt_drucken
End Sub
Sub Tabelle1_Titel_drucken()
Sheets("Tabelle2_0").PrintOut Copies:=1, Collate:=True
MsgBox "Titel wird gedruckt"
End Sub
Sub Tabelle2_Drucktitel_bedingt_drucken()
Dim a%, b%, wks As Worksheet, Zeile_L As Long, Zeile_Zus1 As Long
Set wks = Sheets("Tabelle2")
wks.Select
With wks
'Letzte Zeile mit Daten in Spalte Q = letzte Zeile Zusammenfassung
Zeile_L = .Cells(.Rows.Count, 17).End(xlUp).Row 'ggf. Nummer der Spalte anpassen
'1. Zeile der Zusammenfassung
Zeile_Zus1 = Zeile_L - 16
.PageSetup.Order = xlDownThenOver
.PageSetup.PrintTitleRows = "$1:$3"
Application.ActiveWindow.View = xlPageBreakPreview
Application.ActiveWindow.View = xlNormalView
a = ExecuteExcel4Macro("GET.DOCUMENT(50)")
If Zeile_Zus1  b Then
MsgBox "Ausdruck erfolgt in 2 Druck-Jobs. Bei FreePDF im Dialog bitte " _
& "beim 1. Job ""MultiDoc"" wählen, beim 2. ""Ablegen/Auf Desktop""", _
vbOKOnly + vbInformation, "Drucken FreePDF"
Sheets("Tabelle2").PrintOut From:=1, To:=b, Copies:=1, Collate:=True
.PageSetup.PrintTitleRows = "$1:$2"
.PrintOut From:=a, To:=a, Copies:=1, Collate:=True
.HPageBreaks(.HPageBreaks.Count).Delete
.PageSetup.PrintTitleRows = "$1:$3"
Else
.PrintOut
End If
End With
MsgBox "Tabelle wird gedruckt"
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druck via Makro von zwei Tabellenblättern
29.08.2014 22:45:18
zwei
Beim Drucken sollen die Seitenzahlen in der Fußnote zudem noch fortlaufend gedruckt werden. Besten Dank für Eure Hilfe!!!
Hier nochmal alles - hoffentlich diesmal ohne Tippfehler:
Sub Beide_Tabellen_drucken()
Call Tabelle1_Titel_drucken
Call Tabelle2_Drucktitel_bedingt_drucken
End Sub

Sub Tabelle1_Titel_drucken()
Sheets("Tabelle1").PrintOut Copies:=1, Collate:=True
MsgBox "Titel wird gedruckt"
End Sub

Sub Tabelle2_Drucktitel_bedingt_drucken()
Dim a%, b%, wks As Worksheet, Zeile_L As Long, Zeile_Zus1 As Long
Set wks = Sheets("Tabelle2")
wks.Select
With wks
'Letzte Zeile mit Daten in Spalte Q = letzte Zeile Zusammenfassung
Zeile_L = .Cells(.Rows.Count, 17).End(xlUp).Row 'ggf. Nummer der Spalte anpassen
'1. Zeile der Zusammenfassung
Zeile_Zus1 = Zeile_L - 16
.PageSetup.Order = xlDownThenOver
.PageSetup.PrintTitleRows = "$1:$3"
Application.ActiveWindow.View = xlPageBreakPreview
Application.ActiveWindow.View = xlNormalView
a = ExecuteExcel4Macro("GET.DOCUMENT(50)")
If Zeile_Zus1  b Then
MsgBox "Ausdruck erfolgt in 2 Druck-Jobs. Bei FreePDF im Dialog bitte " _
& "beim 1. Job ""MultiDoc"" wählen, beim 2. ""Ablegen/Auf Desktop""", _
vbOKOnly + vbInformation, "Drucken FreePDF"
Sheets("Tabelle2").PrintOut From:=1, To:=b, Copies:=1, Collate:=True
.PageSetup.PrintTitleRows = "$1:$2"
.PrintOut From:=a, To:=a, Copies:=1, Collate:=True
.HPageBreaks(.HPageBreaks.Count).Delete
.PageSetup.PrintTitleRows = "$1:$3"
Else
.PrintOut
End If
End With
MsgBox "Tabelle wird gedruckt"
End Sub

Anzeige
AW: Druck via Makro von zwei Tabellenblättern
31.08.2014 11:52:09
zwei
Hallo Excelperte,
kleine Zusatzfrage:
Wird auf den einzelnen Seiten beim Drucken in der Fußzeile auch die Gesamtseitenzahl gedruckt?
Falls JA, dann wird es richtig kompliziert, Falls nein, dann muss man "nur" für Tabelle2
Lade zum Testen hier bitte eine Beispiel-Datei hoch - ggf. Dummy-Daten.
Gruß
Franz

AW: Druck via Makro von zwei Tabellenblättern
01.09.2014 21:13:23
zwei
Hallo Franz,
es soll die Gesamtseitenanzahl angezeigt werden. Allerdings besitzt Tabelle1 eine feste Seitenzahl: 2 Seiten. Tabelle2 ist variabel in der Seitenzahl. Damit bräuchte ich nur eine Formel für die Gesamtseitenanzahl für Tabelle1.
Hier mal eine Beispiel-Datei: https://www.herber.de/bbs/user/92429.xlsm
Ich erhalte übrigens öfter folgende Fehlermeldung beim Drucken via Makro:
Laufzeitfehler 9 (Index außerhalb des gültigen Bereichs), welcher sich auf folgende Zeile bezieht:
If Zeile_Zus1 "kleiner-gleich" .HPageBreaks(.HPageBreaks.Count).Location.Row Then
Dieser Fehler tritt immer auf, wenn Tabelle2 nur eine Seite besitzt, aber auch sonst hin und wieder ...
Hoffe, Du weißt Rat! ;-) Hiermit konnte ich nicht viel anfangen: http://support.microsoft.com/kb/210663/de

Anzeige
AW: Druck via Makro von zwei Tabellenblättern
02.09.2014 11:21:40
zwei
Hallo Excelperte,
ich hab das Makro angepasst. Die Anpassungen hielten sich zum Glück in Grenzen.
Du musst aber die Fußzeilen der Beiden Blätter anpassen und die +2 bzw. +3 bei den Seitenzahlen entfernen. Jetzt:
Seite &[Seite] von &[Seiten]
Beim Drucken werden jetzt immer beide Blätter gruppiert gedruckt, da rechnet Excel die Werte für Seitenzahlen und Gesamtseitenzahl korrekt aus.
Gruß
Franz
Sub Drucken_Tab1_plus_Tab2()
Dim a%, b%, wks As Worksheet, Zeile_L As Long, Zeile_Zus1 As Long
Set wks = Sheets("Tabelle2")
wks.Select
With wks
'Letzte Zeile mit Daten in Spalte Q = letzte Zeile Zusammenfassung
Zeile_L = .Cells(.Rows.Count, 17).End(xlUp).Row 'ggf. Nummer der Spalte anpassen
'1. Zeile der Zusammenfassung
Zeile_Zus1 = Zeile_L - 16
.PageSetup.Order = xlDownThenOver
.PageSetup.PrintTitleRows = "$1:$3"
Application.ActiveWindow.View = xlPageBreakPreview
Application.ActiveWindow.View = xlNormalView
a = ExecuteExcel4Macro("GET.DOCUMENT(50)")
If .HPageBreaks.Count = 0 Then
b = a
ElseIf Zeile_Zus1  b Then
MsgBox "Ausdruck erfordert 3 Druck-Jobs. Bei FreePDF im Dialog bitte " _
& "beim 1. und 2 Job ""MultiDoc"" wählen, beim 3. ""Ablegen/Auf Desktop""", _
vbOKOnly + vbInformation, "Drucken FreePDF"
Sheets(Array("Tabelle1", "Tabelle2")).PrintOut From:=1, To:=b + 2, Copies:=1, Collate:= _
True
.PageSetup.PrintTitleRows = "$1:$2"
Sheets(Array("Tabelle1", "Tabelle2")).PrintOut From:=a + 2, To:=a + 2, Copies:=1, Collate: _
=True
.HPageBreaks(.HPageBreaks.Count).Delete
.PageSetup.PrintTitleRows = "$1:$3"
Else
MsgBox "Ausdruck erfordert 2 Druck-Jobs. Bei FreePDF im Dialog bitte " _
& "beim 1. ""MultiDoc"" wählen, beim 2. ""Ablegen/Auf Desktop""", _
vbOKOnly + vbInformation, "Drucken FreePDF"
Sheets(Array("Tabelle1", "Tabelle2")).PrintOut
End If
End With
End Sub

Anzeige
AW: Druck via Makro von zwei Tabellenblättern
04.09.2014 00:24:14
zwei
PERFEKT! Klappt alles wunderbar, hab 1000 DANK!
Gruß
Excelperte

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige