Gruppierung drucken
Hallo Spezies!
Ich habe eine Tabelle zeilenweise gruppiert! Diese Gruppen wähle ich über einen Filter aus, so dass ich wirklich nur gewollte Bereiche sichtbar mache. Diese Bereiche möchte ich nun drucken. Leider bekomme ich, wenn ich z.B. einen Teil aus der Mitte drucken möchte, Leerseiten vorher bzw. nachher.
Lässt sich das irgendwie vermeiden.
Zur Info: Ich habe für die Spalten-Beschriftung Wiederholungszeilen oberhalb der Gruppierungen!
Ich hoffe, Euch fällt dazu was ein!
Gruss
Ines
Antwort schreiben
Antwort 1 von finger59 vom 31.05.2022, 17:26 Options
Hi Ines,
leider hast Du noch keine Antwort bisher auf Deine Frage erhalten, obwohl ich bereits Nr. 33 bin, der sich Deine Frage anschaut.
Ehrlich gesagt kann ich Dir noch nicht so wirklich folgen, was wie passieren soll und da keiner Deine Datei kennt wird es wohl auch schwierig werden eine einfache Lösung zu finden.
Leider bin ich auch nicht der VBA-Kenner dem es jetzt leichtfallen würde zu sagen, geht so und so.... aber ich denke das sich eine Lösung, falls wirklich machbar, nur über ein Makro realiesieren wird.
Von daher, wenn es Dir möglich ist die Datei mit fiktiven Werten ins Netz zu stellen und dann mal an einem Beispiel erläutern, was wann passieren soll.
Ich könnte mir vorstellen, dass es dann zumindest Lösungsansätze geben wird.
In diesem Sinne... have a nice Day... Gruß Helmut
Antwort 2 von Platin7 vom 02.06.2022, 09:50 Options
Hallo Helmut! und sonstige zukünfige Helferlein!
Hier habe ich mal einen kleinen Ausschnit meiner Datei eingestellt!
https://www.wuala.com/ihk121/download?key=rpKhWDjZBJgx
Ich hoffe, es wird jetzt deutlicher, wo mein Problem liegt!
Gruss
Ines
Antwort 3 von M.O. vom 02.06.2022, 11:07 Options
Hallo Ines,
so wie ich das sehe, liegt das Problem in den Seitenumbrüchen, die du festgelegt hast. Wenn du diese herausnimmst und dann gruppierst, wird nur ein Blatt angezeigt.
Gruß
M.O.
Antwort 4 von Platin7 vom 02.06.2022, 11:15 Options
Hallo M.O.!
Wenn ich das so mache, sieht, wenn ich 2250 drucken möchte, die Seite nicht schön aus.
Die Seitenumbrüche haben also schon einen Sinn!
Danke aber trotzdem! Vielleicht fällt Dir noch was besseres ein, oder habe ich Dich missverstanden?
Gruss
Ines
Antwort 5 von M.O. vom 02.06.2022, 13:26 Options
Hallo Ines,
anhand deiner Beispieldatei habe ich mal ein Makro für den Ausdruck des Tabellenblatts geschrieben:
Sub Drucken()
'Alle Seitenwechsel zurücksetzen
ActiveSheet.ResetAllPageBreaks
'Seite drucken
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Seitenwechsel wieder einfügen
ActiveSheet.Rows(44).PageBreak = xlPageBreakManual
ActiveSheet.Rows(88).PageBreak = xlPageBreakManual
ActiveSheet.Rows(140).PageBreak = xlPageBreakManual
End Sub
Gruß
M.O.
Antwort 6 von Platin7 vom 02.06.2022, 15:04 Options
Hi!
Diesen Ansatz finde ich schon ganz klasse!
Nur lässt er sich nicht automatisieren, sprich es funktioniert so ja noch nicht für eine andere Auswahl (2250). Hierfür müsste das Makro die bereits vorhandenen Seiterumbrüche auslesen können. Dies ist wichtig, da dies ja nur ein kleiner Teil meiner Datei ist bzw. andere Bereiche kürzer oder länger sein können.
Vielleicht kannst Du Deinen Ansatz ja noch ausbauen!
Gruss
Ines
Antwort 7 von M.O. vom 03.06.2022, 13:54 Options
Hallo Ines,
versuch es mal mit folgendem Makro:
Sub Drucken()
Dim az, i As Integer
Dim Seitenwechsel() As Integer
'Anzahl der Seitenwechsel auf dem Blatt ermitteln
az = ActiveSheet.HPageBreaks.Count
'Array für Seitenwechsel neu dimensionieren
ReDim Preserve Seitenwechsel(1 To az)
'Seitenwechsel werden eingelesen
For i = 1 To az
Seitenwechsel(i) = ActiveSheet.HPageBreaks(i).Location.Row
Next i
'Alle Seitenwechsel zurücksetzen
ActiveSheet.ResetAllPageBreaks
'Seite drucken
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Seitenwechsel wieder einfügen
For i = 1 To az
ActiveSheet.Rows(Seitenwechsel(i)).PageBreak = xlPageBreakManual
Next i
End Sub
Gruß
M.O.
Antwort 8 von Platin7 vom 04.06.2022, 10:07 Options
Hallo M.O. !
Danke für Deine Mühe!
Ich habe das Makro ausprobiert!
Leider sind die Seiterümbrüche beim Drucken nicht da, wo sie hingehören. Da klappt wohl was beim Auslesen noch nicht.
Gruss
Ines
Antwort 9 von M.O. vom 04.06.2022, 11:55 Options
Hallo Ines,
sind die Seitenumbrüche verschoben ( falls ja wie) und/oder fehlen einige ganz?
Gruß
M.O.
Antwort 10 von Platin7 vom 04.06.2022, 12:00 Options
Hallo M.O.!
Die Umbrüche sind verschoben!
Beim Drucken von 2250 habe ich auf der ersten Seite noch 3 Zeilen der Zweiten.
Gruss zurück...
Ines
Antwort 11 von M.O. vom 06.06.2022, 13:59 Options
Hallo Ines,
ich habe das Makro getestet und bei mir lief es einwandfrei. Ich habe leider keine Ahnung, warum es in deiner Mappe zu einem Fehler kommt.
Gruß
M.O.
Antwort 12 von Platin7 vom 07.06.2022, 11:10 Options
Hallo M.O.!
Wenn ich das Makro bei Filter auf 2250 Schritt für Schritt in der Seitenumbruchvorschau laufen lasse, dann sehe ich an dieser Stelle...
'Alle Seitenwechsel zurücksetzen
ActiveSheet.ResetAllPageBreaks
... wie vor dem Drucken der Seitenwechsel sich verändert!
Der alte Umbruch soll jedoch erhalten bleiben!!!
Vielleicht kannst Du Dir das so noch mal ansehen!
Gruss
Ines
Antwort 13 von M.O. vom 07.06.2022, 12:10 Options
Hallo Ines,
wenn deine Orginaldatei keine vertraulichen Daten erhält, dann lade sie mal hoch und poste hier den Link. Ansonsten melde dich hier an (ist kostenlos) und ich lasse dir über den Pager eine E-Mail-Adresse zukommen, an die du die Datei senden kannst.
Gruß
M.O.
Antwort 14 von Platin7 vom 07.06.2022, 12:16 Options
Hi!
Der Umbruchfehler taucht auch in der Musterdatei, die hier steht
https://www.wuala.com/ihk121/download?key=rpKhWDjZBJgx
auf!
Gruss
Ines
Antwort 15 von M.O. vom 07.06.2022, 13:16 Options
Hallo Ines,
Problem erkannt. Da muss aber erst mal etwas tüfteln :-).
Gruß
M.O.
Antwort 16 von M.O. vom 09.06.2022, 11:51 Options
Hallo Ines,
probier mal das folgende Makro aus:
Sub Drucken_neu()
Dim a, az, i As Integer
Dim Seitenwechsel() As Integer
'Anzahl der Seitenwechsel auf dem Blatt ermitteln
az = ActiveSheet.HPageBreaks.Count
'Array für Seitenwechsel neu dimensionieren
ReDim Preserve Seitenwechsel(1 To az, 2)
'Seitenwechsel werden eingelesen
For i = 1 To az
Seitenwechsel(i, 1) = ActiveSheet.HPageBreaks(i).Location.Row
If Rows(ActiveSheet.HPageBreaks(i).Location.Row - 1).EntireRow.Hidden = True Then
Seitenwechsel(i, 2) = 0 'Marker für Seitenwechsel im ausgeblendeten Bereich
Else
Seitenwechsel(i, 2) = 1 'Marker für Seitenwechsel im eingeblendeten Bereich
End If
Next i
'Alle Seitenwechsel zurücksetzen
ActiveSheet.ResetAllPageBreaks
'Seitenwechsel im eingeblendeten Bereich setzen
For i = 1 To az
If Seitenwechsel(i, 2) = 1 Then ActiveSheet.Rows(Seitenwechsel(i, 1)).PageBreak = xlPageBreakManual
Next i
'Seite drucken
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'Seitenwechsel im ausgeblendeten Bereich setzen
For i = 1 To az
If Seitenwechsel(i, 2) = 0 Then ActiveSheet.Rows(Seitenwechsel(i, 1)).PageBreak = xlPageBreakManual
Next i
End Sub
Gruß
M.O.
Antwort 17 von Platin7 vom 09.06.2022, 12:04 Options
Hallo M.O.!
Super, so habe ich mir das vorgestellt!
Vielen Dank für Deine Mühe!
Schöne Restwoche noch...
LG
Ines
Antwort 18 von M.O. vom 09.06.2022, 13:07 Options
Hallo Ines,
danke für die Rückmeldung und auch dir noch eine schöne Woche.
Gruß
M.O.
Antwort 19 von Platin7 vom 09.06.2022, 15:34 Options
Hallo M.O.!
Ich doch noch mal!
Für die Seitenwechsel der Höhe klappt es ja einwandfrei!
Wenn ich aber noch Spalten hinzufüge, bekomme ich neue Seiten in der Breite!
Am Skript kann ich aber nicht erkennen, warum dies so ist bzw. an welcher Stelle ich eingreifen muss.
Gruss
Ines!
Antwort 20 von M.O. vom 09.06.2022, 19:37 Options
Hallo Ines,
der Code liest nur die horizontalen Seitenwechsel aus. Bei deiner Beispieltabelle war ein Druckbereich definiert, der durch den Code aber nicht beeinflusst wird. Du musst ggf. deinen Druckbereich anpassen.
(Ich hoffe, ich habe dein Problem richtig verstanden)
Gruß
M.O.