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

Forumthread: Genau 10 Seiten mit 52 Zeilen drucken

Genau 10 Seiten mit 52 Zeilen drucken
Klaus
https://www.herber.de/bbs/user/63555.xls
Hallo Forum,
bin am verzweifeln. Ich hatte die Frage schon vor ein paar Tagen gestellt und auch
eine Antwort erhalten, es will aber einfach nicht klappen:
Es geht "nur" darum, einen bestimmten Bereich auf genau 10 Seiten A4 zu drucken.
Der Bereich umfasst 520 Zeilen, also 52 Zeilen pro Seite.
Ich habe ein Druckmakro geschrieben, dass wunderbar funktioniert – aber nur unter dem Mac.
Sobald das Dokument unter Windows geöffnet wird bringt er mir die Druckseiten durcheinander.
Warum nur?
Bin für jeden Hinweis dankbar.
Gruß
Klaus
Option Explicit
'Anzahl Zeilen pro Druckseite
Public Const intSEITE As Integer = 52
'Erste Zeile Printbereich
Public Const intZEILE As Integer = 6
'Bis zu welcher Spalte wird gedruckt
Public Const strSPALTE As String = "P"
Sub Drucken()
Dim lToRow As Long
Dim PrintArea As Range
Dim maxPage As Integer
With ActiveSheet
'Letzte Zeile festlegen
lToRow = .Cells.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'Anzahl Druckblätter ermitteln (= letzte Seitenzahl)
maxPage = WorksheetFunction.Max(Range("J" & intZEILE & ":" & "J" & lToRow))
'Printbereich festlegen = (B+1.Druckzeile) bis (letzte Zeile / letzte Spalte)
Set PrintArea = ActiveSheet.Range("B" & intZEILE & ":" & strSPALTE & lToRow)
ActiveSheet.PageSetup.PrintArea = PrintArea.Address
End With
With ActiveSheet.PageSetup
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.CenterHorizontally = True
.CenterVertically = True
.Order = xlDownThenOver
.FitToPagesWide = 1
'Unterteilen des Printbereichs in Anzahl Druckblätter:
.FitToPagesTall = maxPage
End With
ActiveSheet.PrintPreview
'Drucklinien zurücksetzen
ActiveSheet.ResetAllPageBreaks
End Sub

Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
01.08.2009 11:41:31
Klaus
Hmmm ...
entweder ist die Frage zu uninteressant oder es weis wirklich niemand eine Antwort darauf(?)
Anders herum gefragt:
Gibt es denn jemanden bei dem das Makro (Mappe beigefügt) unter Windows das
gewünschte Ergebnis erzielt?
bzw. wenn nicht, hast Du eine Idee warum nicht?
Würde ja schon helfen.
Liebe Grüße
Klaus
Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
01.08.2009 12:20:28
Dieter
Hi,
alles exakt so, wie du es willst.
Das Ganze ist aber vom verwendeten Drucker(treiber) abhängig.
Die Genauigkeit beim Druck war in Excel noch nie berauschend.
mfg Dieter
AW: Genau 10 Seiten mit 52 Zeilen drucken
01.08.2009 12:34:21
Klaus
Hallo Dieter,
erst einmal Danke für Dein testen!
Was ich aber dann nicht ganz verstehe:
wenn ich z.B. die ersten 52 Zeilen selektiere und dann manuell mit FitToPage
auf eine Druckseite zwinge, warum lässt sich dieser Vorgang dann nicht
auf die nachfolgenden Seiten anwenden? Gibt's da einen Trick?
Evtl. die Drucklinien vorher setzen oder so?
Deine Antwort bedeutet ja im Klartext, dass ich sonst keine Möglichkeit habe
ein Druckmakro zu schreiben, dass in jedem Fall meine Seitenunterteilung ausdruckt ...
Seufz. Sehr unbefriedigend das Ganze.
Trotzdem Danke nochmals.
Gruß
Klaus
Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
01.08.2009 19:07:02
Daniel
Hi
bei FitToPage ignoriert Excel die von Hand eingefügten Seitenumbrüche.
du müsstest also von Hand (bzw per Makro) einen Zeilenumbruch einfügen und dann bei bedarf den Zoom-Faktor so einstellen, daß es auch nur 52 Seiten gibt.
die Zeilenhöhen müssen allerdings passen, so daß immer die 52 Zeilen auch auf eine Seite passen.
Option Explicit
'Anzahl Zeilen pro Druckseite
Public Const intSEITE  As Integer = 52
'Erste Zeile Printbereich
Public Const intZEILE  As Integer = 6
'Bis zu welcher Spalte wird gedruckt
Public Const strSPALTE  As String = "P"
Sub Drucken()
Dim lToRow As Long
Dim PrintArea As Range
Dim maxPage As Integer
Dim i As Long
With ActiveSheet
'Letzte Zeile festlegen
lToRow = .Cells.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'Anzahl der Druckblätter ermitteln (= letzte Seitenzahl)
maxPage = WorksheetFunction.Max(Range("J" & intZEILE & ":" & "J" & lToRow))
'Printbereich festlegen = (B+1.Druckzeile) bis (letzte Zeile / letzte Spalte)
Set PrintArea = ActiveSheet.Range("B" & intZEILE & ":" & strSPALTE & lToRow)
ActiveSheet.PageSetup.PrintArea = PrintArea.Address
'Zeilenumbrüche einfügen
ActiveSheet.ResetAllPageBreaks
For i = intZEILE To lToRow Step intSEITE
.HPageBreaks.Add before:=.Cells(i, 1)
Next
End With
With ActiveSheet.PageSetup
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.CenterHorizontally = True
.CenterVertically = True
.Order = xlDownThenOver
End With
ActiveSheet.PrintPreview
'Drucklinien zurücksetzen
ActiveSheet.ResetAllPageBreaks
End Sub
Gruß, Daniel
Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
03.08.2009 09:54:08
Klaus
Hallo Daniel,
danke für Deinen Beitrag. Klappt aber leider auch nicht.
Ich hatte auch schon ähnlich experimentiert und in Spalte A "Umbruch" eingefügt
und danach gesucht:
.ResetAllPageBreaks
For iRow = .Cells(.Rows.Count, 1).End(xlUp).Row To 1 Step -1
If .Cells(iRow, 1).Value = "Umbruch" Then
.Rows(iRow + 1).PageBreak = xlPageBreakManual
End If
Next iRow
Klappt aber auch nicht.
Selbst das stufenlose Ausdrucken von 95 bis 99 % ergibt nicht das Ergebnis.
Es wird entweder eine Zeile mehr oder eine weniger gedruckt.
Der einzige Workaround, den ich gefunden habe, ist: jeweils alle anderen Zeilen
ausblenden und dann immer eine Seite drucken.
Ich probier momentan, das mit meinen bescheidenen VBA-Kenntnissen
in eine Schleife zu packen ...
Gruß
Klaus
Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
03.08.2009 16:14:32
Daniel
HI
das mit dem einfügen des Seitenumbruchs funktioniert normalerweise schon, nur darfts du dann kein FitToPage verwenden, daß muss deaktiviert und eine feste Zoomstufe eingestellt sein.
Gruß, Daniel
AW: Genau 10 Seiten mit 52 Zeilen drucken
03.08.2009 16:59:26
Klaus
Hallo Daniel,
auch ohne FitToPage + mit fester Zoomstufe läufts leider nicht. Jedenfalls nicht
zwingend bei jeder Windows-/Excel-Version. Wie gesagt, bei mir unter dem Mac
läuft es, bei Dir und Dieter auch. Aber unter meiner Mac-Windows-Emulation
nicht und bei z.B. meinem Bruder (Windows PC) auch nicht.
Ich hab mich jetzt damit abgefunden, dass es einige wenige Konstellationen
zu geben scheint, die Probleme bereiten …
Gruß, Klaus
Anzeige
AW: Genau 10 Seiten mit 52 Zeilen drucken
03.08.2009 19:12:23
Daniel
Hi
sorry, wusste nicht daß es Versionsproblem ist, aber von dir gabs ja auch keinen Hinweis darauf ("alle Versionen" ?)
aus meiner Sicht ist das Problem gelöst, da ich deine PC-Konfiguration nicht habe, kann ich da sowieso nicht weiterhelfen
Gruß, Daneil
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Genau 10 Seiten mit 52 Zeilen drucken in Excel


Schritt-für-Schritt-Anleitung

Um einen bestimmten Bereich in Excel auf genau 10 Seiten mit jeweils 52 Zeilen zu drucken, kannst du folgendes Vorgehen nutzen:

  1. Druckbereich festlegen: Zuerst musst du den Druckbereich definieren. Öffne VBA (Visual Basic for Applications) durch Drücken von ALT + F11.

  2. Makro erstellen: Füge den folgenden Code in ein neues Modul ein:

    Option Explicit
    'Anzahl Zeilen pro Druckseite
    Public Const intSEITE As Integer = 52
    'Erste Zeile Printbereich
    Public Const intZEILE As Integer = 6
    'Bis zu welcher Spalte wird gedruckt
    Public Const strSPALTE As String = "P"
    
    Sub Drucken()
       Dim lToRow As Long
       Dim PrintArea As Range
       Dim maxPage As Integer
       Dim i As Long
    
       With ActiveSheet
           'Letzte Zeile festlegen
           lToRow = .Cells.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
           'Anzahl der Druckblätter ermitteln
           maxPage = WorksheetFunction.Max(Range("J" & intZEILE & ":" & "J" & lToRow))
           'Printbereich festlegen
           Set PrintArea = ActiveSheet.Range("B" & intZEILE & ":" & strSPALTE & lToRow)
           ActiveSheet.PageSetup.PrintArea = PrintArea.Address
           'Seitenumbrüche hinzufügen
           .ResetAllPageBreaks
           For i = intZEILE To lToRow Step intSEITE
               .HPageBreaks.Add before:=.Cells(i, 1)
           Next
       End With
    
       With ActiveSheet.PageSetup
           .TopMargin = Application.InchesToPoints(0.393700787401575)
           .BottomMargin = Application.InchesToPoints(0.393700787401575)
           .HeaderMargin = Application.InchesToPoints(0)
           .FooterMargin = Application.InchesToPoints(0)
           .CenterHorizontally = True
           .CenterVertically = True
           .FitToPagesWide = 1
           .FitToPagesTall = maxPage
       End With
       ActiveSheet.PrintPreview
    End Sub
  3. Makro ausführen: Starte das Makro „Drucken“, um deinen Bereich entsprechend zu drucken.


Häufige Fehler und Lösungen

Beim Drucken von 10 Seiten mit 52 Zeilen kann es zu verschiedenen Problemen kommen:

  • Druckseiten durcheinander: Wenn das Makro auf Windows nicht wie gewünscht funktioniert, kann es an den Druckertreibern liegen. Stelle sicher, dass du die neuesten Treiber installiert hast.
  • Seitenumbrüche ignoriert: Excel ignoriert oft manuell gesetzte Seitenumbrüche, wenn die Funktion FitToPage aktiviert ist. Deaktiviere diese Option, um sicherzustellen, dass die Umbrüche beachtet werden.
  • Zeilen passen nicht auf die Seite: Überprüfe die Zeilenhöhe, um sicherzustellen, dass 52 Zeilen pro Seite passen. Passe gegebenenfalls die Zeilenhöhe an.

Alternative Methoden

Falls das oben beschriebene Makro nicht funktioniert, kannst du folgende Alternativen ausprobieren:

  • Manuelles Setzen von Seitenumbrüchen: Du kannst auch manuell Seitenumbrüche setzen, indem du Seitenlayout > Umbrüche > Seitenumbruch einfügen wählst.
  • Anpassung des Zoom-Faktors: Statt FitToPage zu verwenden, stelle einen festen Zoom-Faktor ein, der 100% entspricht. Dies kann helfen, die Ausgabe zu stabilisieren.

Praktische Beispiele

Hier sind einige Beispiele, wie du das Drucklayout anpassen kannst:

  1. Drucken eines speziellen Bereichs: Wenn du nur einen bestimmten Bereich drucken möchtest, ändere die PrintArea-Einstellung im Makro entsprechend.
  2. Druckvorschau nutzen: Verwende die PrintPreview-Funktion, um sicherzustellen, dass alles wie gewünscht aussieht, bevor du tatsächlich druckst.

Tipps für Profis

  • VBA-Optimierung: Optimiere dein VBA-Skript, indem du Fehlerbehandlung einfügst, um Probleme während der Ausführung zu identifizieren.
  • Drucker-Einstellungen prüfen: Überprüfe die Druckeinstellungen deines Druckers und stelle sicher, dass sie mit den Excel-Einstellungen übereinstimmen.
  • Versionen vergleichen: Teste das Makro auf verschiedenen Excel-Versionen, da es Unterschiede in der Verarbeitung geben kann.

FAQ: Häufige Fragen

1. Warum funktioniert das Makro auf dem Mac, aber nicht auf Windows? Die Unterschiede in den Druckertreibern und den Excel-Versionen können zu unterschiedlichen Ergebnissen führen.

2. Wie kann ich sicherstellen, dass 52 Zeilen auf eine Seite passen? Achte auf die Zeilenhöhe und stelle sicher, dass die FitToPage-Option deaktiviert ist, um die Kontrolle über die Druckausgabe zu behalten.

3. Was mache ich, wenn Excel Seitenumbrüche ignoriert? Manuelle Seitenumbrüche sollten gesetzt werden, bevor du das Makro ausführst, um sicherzustellen, dass sie beachtet werden.

4. Ist das Makro mit Excel 365 kompatibel? Ja, das bereitgestellte Makro sollte auch in Excel 365 funktionieren, solange die VBA-Funktionalität aktiviert ist.

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