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

VBA: Hilfe bei Makro zum Formatieren

VBA: Hilfe bei Makro zum Formatieren
03.03.2020 11:06:51
Axel
Hallo zusammen,
ich habe das unten aufgeführte Makro zum Einrichten einer Seite zusammengeschrieben (zum Teil mit Makroeditor).
Grundsätzlich läuft es durch, aber:
- das Datum im CenterHeader ist durchgestrichen
- die Seitenzahl "&P" im RightFooter ist nicht die Seitenzahl, sondern die Dateiquelle
- die Gesamtseitenzahl "&N" im RightFooter ist keine Zahl, sondern die Dateibezeichnung
- die zu druckende Tabelle füllt nicht das ganze Blatt, obwohl der Fokus auf 100% steht.
Ich erbitte eure Hilfe. Nach meinen Recherchen müsste es so funktionieren.
Sub Seite_einrichten()
Application.PrintCommunication = False
Application.ScreenUpdating = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$11" 'Wiederholungszeilen pro Seite
.PrintTitleColumns = ""
.PrintArea = ""
.LeftHeader = ""
.CenterHeader = Format(Date, "Long Date")
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = "Seite &P von &N" 'Fußzeile rechts: Seite 1 von n
.Orientation = xlLandscape 'Querformat
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.Zoom = 100
.FitToPagesWide = False
.FitToPagesTall = False
.PaperSize = xlPaperA4
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.7)
.BottomMargin = Application.InchesToPoints(0.7)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.CenterHorizontally = False
.CenterVertically = False
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.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
Application.PrintCommunication = True
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
ActiveSheet.HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
Application.Dialogs(xlDialogPrint).Show
End Sub
Vielen Dank an alle vorab.
Axel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Hilfe bei Makro zum Formatieren
03.03.2020 18:51:57
fcs
Hallo Axel,
ich kann mich nicht mehr 100% erinnern, welch Zeichen die alten Versonen von Excel für Seite und Gesamtseitenzahl erfordern - es sollten hier die deutschsprachigen Werte sein. Damals gab es bei MS noch den Internationaliserungs-Wahn und man hat unter VBA teiweise mit nationalen Zeichen im Page-Setup gearbeitet, um es Nicht-US-Usern zu erleichtern. Letztendlich hat man den wenig erfahrenen Usern aber die Arbeit erschwert, da der Makro-Rekorder in US-Zeichen aufzeichnet. Probiere mal:
&S für Seite
&A für für Gesamtseitenzahl.
Beim Zoom hast du einen kleinen Denkfehler bzw. kennst die erforderliche Enstellung noch nicht.
100 bedeutet, dass der Ausdruck mit den im Blatt festgelegten Spaltenbreiten erfolgt.
Wenn die Spaltenbreiten immer gleich sind, dann kannst du den Wert erhöhen damit über die ganze Seitenbreite gedruckt wird. Einfach manuell die Zoom-Einstellung ändern bis es passt und dann das Makro anpassen.
LG
Franz
Anzeige
AW: VBA: Hilfe bei Makro zum Formatieren
04.03.2020 08:49:25
Axel
Hallo Franz,
danke für die Hinweise. Ich hab's mal eingesetzt, aber leider stolpert das Makro jetzt an der Stelle
.LeftHeader = "" mit dem Hinweis
Laufzeitfehler 1004, Die LeftHeader-Eigenschaft des PageSetup-Objekts kann nicht festgelegt werden.
Schau bitte mal, hier ist die Datei, wo der ersten drei Makros schon ausgeführt sind und das "Seite einrichten" Makro im Modul 5 steht.
https://www.herber.de/bbs/user/135597.xlsm
Ach so, und ich hatte ja auch noch die Auffälligkeit, dass das Datum im CenterHeader durchgestrichen war. Wie kann das denn geändert werden?
Danke und Gruß
Axel
Anzeige
AW: VBA: Hilfe bei Makro zum Formatieren
04.03.2020 09:33:53
Axel
Hallo zusammen,
also die Fehlermeldung wegen der Header resultierte aus einer nicht funktionierenden Druckereinrichtung.
Das ist behoben.
@Franz: Mit .RightFooter = "Seite &S von &A" funktioniert auch die Anzeige der Seitenzahl. Danke dafür.
Bleibt nur noch die Frage: Warum wird das Datum beim .CenterHeader = Format(Date, "Long Date") durchgestrichen angezeigt?
Nochmals vielen Dank an alle Helfer!
AW: VBA: Hilfe bei Makro zum Formatieren
04.03.2020 10:30:08
fcs
Hallo Axel,
ich kann mit älteren Excel-Versionen vor 2010 nicht testen.
Ich hab jetzt einige Prüfungen der Excelversion (vor/nach Excel 2007) eingebaut, da einige PageSetUp-Anweisungen sich unterscheiden bzw. in den älteren Versionen noch nicht existieren.
Zusätzlich wird Application.PrintCommunication nicht vorübergehend auf False gesetzt. Wenn Application.PrintCommunication deaktiviert wird, dann werden die PagesetUp-Einstellungen hier nicht vollständig gesetzt bevor der Druckdialog angezeigt und einige Werte in Header/Footer werden chaotisch - ich hatte z.B. plötzlich den Pfad der Datei vor dem Datim im oberen mittleren Teil der Kopfzeilen.
Auch das von dir beobachtete Durchstreichen von Texten könnte darauf zurüchzuführen sein.
Die Zeilen zur Anzeige mit Seitenumrüchen und das Verschieben der Seitenwechsel hab ich auskommentiert.
Mit Einstellungen für Zoom, FitToPagesWide und FitToPagesTall sollte der Druck auf eine Seitenbreite gezoom werden.
LG
Franz
Textdatei mit angepasstem Makro
https://www.herber.de/bbs/user/135600.txt
Anzeige
gelöst
04.03.2020 12:37:18
Axel
Hi Franz,
Super Danke! Ich hab Deine Änderungen übernommen.
Mit dem Zoom muss ich noch mal schauen. Mit Deiner Einstellung wird ungünstig auf eine zweite Seite umgebrochen. Aber da finde ich mit Ausprobieren sicher eine Lösung.
Jetzt passt es auch mit dem CenterHeader.
Nochmals vielen vielen Dank
Axel
AW: gelöst
04.03.2020 13:19:57
fcs
Hallo Axel,
setze den Wert Parameter FitToPagesTall von False auf 1.
Dann wird alles auf eine Seite gedruckt und ggf nichtdie volle Papierbreite genutzt.
LG
Franz
AW: gelöst
05.03.2020 06:43:17
Axel
Ja danke Franz.
Das hatte ich zwischenzeitlich schon probiert, sieht aber nicht so toll aus. Ich muss mal schauen, ob es nicht besser ist, grundsätzlich einfach nur den Druckkontext aufzurufen, dann muss man halt im Nachhinein den Feinschliff beim Seite einrichten machen.
Aber Danke für Deine Hilfe auf jeden!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige