Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VBA Excel Pagesetup Printarea festlegen (https://www.delphipraxis.net/130611-vba-excel-pagesetup-printarea-festlegen.html)

gabneo 11. Mär 2009 09:07


VBA Excel Pagesetup Printarea festlegen
 
Hallo Delphianer,

ich bin am Verzweifeln. Habe schon sehr lange gegoogelt aber nichts gefunden.

Mein Problem ist: Ich habe in Excel eine Liste mit 501 Seiten und möchte den Druckbereich per Makro festlegen. Nur wie kann man die Seitengröße festlegen? Meine Seiten sind immer genau 76 Zeilen Hoch und 20 Zeilen Breit!
Hört sich einfach an, aber über Einfügen von Pagebreaks (HPageBreak, VPagebreak) bekommt man in Excel Probleme mit der zu großen Spalten/Zeilenzahl pro Seite und Excel fügt weitere pagebreaks ein die die Seiten dann zerschneiden.
Am besten löst man es über Printarea. Interessanterweise muss die Seitengröße dort Einstellbar sein, da man unterschiedliche Seitengrößen vererben kann. Aber wie?

Hier mal der Code den ich schon habe:

Delphi-Quellcode:
Sub Druckbereich()

Application.ScreenUpdating = False
         
With ActiveSheet
   
'   Hier muss noch die Seitengröße eingetragen werden?!

'z.B. .pagesetup.pagesize = rows(76),cols(20)   <- nur zum verdeutlichen was ich suche

     .PageSetup.PrintArea = "$A$1:$S$38076"

End With

Application.ScreenUpdating = True

End Sub
Please Help me out :love:

Vielen Dank und greez
:dp: gabneo

mkinzler 11. Mär 2009 09:08

Re: VBA Excel Pagesetup Printarea festlegen
 
Lass dir doch die Aktion als Makro aufzeichnen

gabneo 11. Mär 2009 09:12

Re: VBA Excel Pagesetup Printarea festlegen
 
Dabei kommt nur der Code raus den man oben sieht.

Er Erzeugt dann nur
Delphi-Quellcode:
.PageSetup.PrintArea = "$A$1:$S$38076"
aber keinen Code der zeigt welche größe er als Vorlage verwendet hat...

gabneo 11. Mär 2009 12:07

Re: VBA Excel Pagesetup Printarea festlegen
 
selber gelöst :cyclops:

Delphi-Quellcode:
Public Sub Workbook_BeforePrint(Cancel As Boolean)
'Quelle: Kolja Aidam IT-Services Copyright 2009

Dim xelRows As Long, i As Long

Application.ScreenUpdating = False

On Error Resume Next

With ActiveSheet

 .ResetAllPageBreaks
 For xelRows = 1 To Range("A65536").End(xlUp).Row
 If Rows(xelRows).Hidden = False Then i = i + 1
 If i Mod 76 = 0 Then .HPageBreaks.Add Cells(xelRows + 1, 1)
 Next

 .PageSetup.PrintArea = "$A$1:$S$38076"
 
 .VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
 Set .HPageBreaks(1).Location = Range("A77")

End With

Application.ScreenUpdating = True
   
End Sub
greez


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz