Microsoft Excel

Herbers Excel/VBA-Archiv

Druckbereich via VBA definieren

Betrifft: Druckbereich via VBA definieren von: Ken
Geschrieben am: 07.03.2013 11:54:39

Hallo,

ich habe ein Problem woran ich so langsam verzweifel...
Habe ein Excelblatt was mit Daten gefüllt ist die beim Ausdruck im Querformat 2 Seiten beanspruchen. Die Kopfzeile habe ich mit:
Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True
festgelegt. Ich weiß nur leider nicht wie ich per VBA schreiben soll, dass die zweite Seite auch diesen Kopfbereich am Anfang drucken soll. Mein Printcode sieht bis jetzt so aus:
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With

Kann mir bitte jemand einen Tipp geben wo ich ansetzen muss...vielen Dank!
Ken

  

Betrifft: Wiederholungszeilen via VBA definieren von: Erich G.
Geschrieben am: 07.03.2013 12:36:14

Hi Ken,
ActiveWindow.FreezePanes wirkt auf die Anzeige des Fensters des Blatts auf dem Bildschirm,
mit dem Druck hat das nichts zu tun.

Was du möchtest, ist wohl
ActiveSheet.PageSetup.PrintTitleRows = "$7:$7"

Das kannst du mit
.PrintTitleRows = "$7:$7"
hinter deinem "With ActiveSheet.PageSetup" schreiben.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Wiederholungszeilen via VBA definieren von: Ken
Geschrieben am: 07.03.2013 12:58:50

Hallo Erich,

vielen Dank für die schnelle Antwort und den Tipp! Habe ich sofort umgesetzt, allerdings ist das Resultat gleich: erste Seite druckt den definierten Kopf (aber das passiert bei der ersten Seite ja sowieso) und auf der zweiten Seite steht dann der Rest, ohne den definierten Bereich ($7:$7).

Ich muss aber noch erwähnen, dass ich die Zeilen:
.FitToPagesWide = 1
.FitToPagesTall = 1
auf 2 gesetzt habe, ansonsten presst er alles auf eine Seite.

Es würde mir vielleicht helfen wenn ich dem Code sagen könnte in welcher Zeile die erste Druckseite aufhört und dann nochmal deinen Code einfügen, oder?

Also nochmal Danke und einen fast sonnigen Gruß aus Köln
Ken


  

Betrifft: AW: Wiederholungszeilen via VBA definieren von: Klaus M.vdT.
Geschrieben am: 07.03.2013 13:03:39

Hi Ken,

du machst es falsch. PrintTitleRows funktioniert definitv. In Zeile 7 stehen auch die Überschriften, ja?

Dein Makro, gekürtzt auf das wesentliche:

Sub TitleRows()
With ActiveSheet.PageSetup
    PrintTitleRows = "$7:$7"
    .FitToPagesWide = 2
    .FitToPagesTall = 2
End With
End Sub
Grüße,
Klaus M.vdT.


  

Betrifft: AW: Wiederholungszeilen via VBA definieren von: Ken
Geschrieben am: 07.03.2013 13:15:19

Hallo Klaus M.vdT.,

ich habe meinen Code durch deinen ersetzt und das Ergebnis ist gleich bzw. eher schlimmer, weil er jetzt in Hochformat drucken will und daraus 30 Seiten macht. Aber abgesehen von den 30 Seiten, Zeile 1-7 ist nur im ersten Blatt zu sehen.

Gruß
Ken


  

Betrifft: AW: Wiederholungszeilen via VBA definieren von: Klaus M.vdT.
Geschrieben am: 07.03.2013 13:18:54

Zeile 1-7 ist Sub TitleRows()

With ActiveSheet.PageSetup
    PrintTitleRows = "$1:$7"
    .FitToPagesWide = 2
    .FitToPagesTall = 2
End With
Und jetzt?

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Wiederholungszeilen via VBA definieren von: Ken
Geschrieben am: 07.03.2013 13:30:58

Immer noch nicht, sorry.

Gruß
Ken


  

Betrifft: Datei bitte! von: Klaus M.vdT.
Geschrieben am: 07.03.2013 13:43:16

Hi Ken,

bei mir klappts.
Lädst du eben die Datei hoch bitte?

Grüße,
Klaus M.vdT.


  

Betrifft: Wiederholungszeilen via VBA definieren von: Erich G.
Geschrieben am: 07.03.2013 13:23:40

Hi Ken,
da geht es also wohl nicht nur um die eine Zeile 7, sondern um die Zeilen 1 bis 7?

Probier mal

Sub TitleRows()
   With ActiveSheet.PageSetup
      .Orientation = xlLandscape
      .PrintTitleRows = "$1:$7"
      .FitToPagesWide = 2
      .FitToPagesTall = 2
   End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Druckbereich via VBA definieren von: Ken
Geschrieben am: 07.03.2013 13:40:22

Es funktioniert jetzt! Und zwar haben wohl die Zeilen:
Range("7:7").Select
xlApp.ActiveWindow.FreezePanes = True
gestört, wo ich den oberen Bereich mit "einfriere". Er druckt jetzt auf jeder Seite den Bereich $1:$7.

Erstmal sorry, dass es so lange gedauert hat und vielen Dank für die tolle Hilfe!
Eine Frage hätte ich noch, kann ich trotzdem in dem Code angeben ab wann die zweite Seite gedruckt werden soll?

Gruß
Ken


  

Betrifft: Fenster fixieren, Seitenumbruch von: Erich G.
Geschrieben am: 07.03.2013 18:29:48

Hi Ken,
zum Fixieren des Fensters an Zelle A7 brauchst du nicht die ganze Zeile 7 zu selektieren (mit "7:7"). Dazu reicht
Cells(7, 1).Select '(markiert Zelle A7)

Wozu ist hier das xlApp. gut? Wenn das an dieser Stelle sinnvoll wäre, müsstest du Application und Workbook
an allen Stellen angeben, z. B. mit
With xlApp.ActiveWorkbook.ActiveSheet.PageSetup
Das muss aber vermutlich gar nicht sein,
With ActiveSheet.PageSetup
reicht wohl aus.

Was meinst du mit "ab wann die zweite Seite gedruckt werden soll"?
Geht es darum, vor einer bestimmten Zeile oder Spalte einen Seitenumbruch einzufügen?
Das geht mit den HPageBreaks bzw. VPageBreaks.

Probier mal:

Sub aaaaaa()
   Cells(7, 1).Select   ' oder:  Range("A7").Select
   ActiveWindow.FreezePanes = True

   ActiveSheet.HPageBreaks.Add Before:=Cells(36, 1)  ' oder:  Before:=Range("A36")
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Fenster fixieren, Seitenumbruch von: Ken
Geschrieben am: 08.03.2013 10:10:19

Hallo Erich,

sorry für die späte Antwort.
Habe alles umgesetzt und es funktioniert :-) Vielen Dank!
Mein einziges Problem ist, dass der Ausgedruck nicht die ganze Zeite einnimmt, habe rechts noch einen Rand von ca. 5cm, oben und unten wäre auch noch platz.

Nochmal vielen Dank für die tolle Hilfe!

Ken


 

Beiträge aus den Excel-Beispielen zum Thema "Druckbereich via VBA definieren"