Zeilenumbruch und fittopagestall bei pdf-Export
05.05.2026 19:22:39
jonas.poskowsky
ich habe hier so ein bisschen autodidaktisches VBA und möchte aus einem Tabellenblatt per Makro ein pdf erzeugen. Das Tabellenblatt selbst wird mittels eines anderen Makros befüllt, wobei die Nutzer*innen zuvor ein Datum in Zelle B3 definieren und einen Betrieb in Zelle A3. Je nach Betrieb kommen dann unterschiedlich viele Daten zusammen, die aber immer in zwei thematische Kategorien aufgesplittet sind. Dort, wo die zweite Kategorie beginnt, steht dann noch mal in Spalte A "Betrieb:" und in Spalte B die Benennung desselben. Und dann kommen halt die Daten der zweiten Kategorie.
Bisher hat das soweit gepasst, dass ich einen Zeilenumbruch über HPageBreaks.Add eingefügt hatte und dann alles schön auf zwei Seiten aufgeteilt hatte.
Nun ist aber die Anforderung hinzugekommen, die Daten der ersten Kategorie zu ergänzen, so dass zumindest in einigen Fällen mehr Zeilen für die erste Kategorie entstehen als auf eine Seite passen. Deshalb laufen die Daten der ersten Kategorie nun teilweise auch auf die zweite Seite des pdf und dann kommt der Zeilenumbruch und dann die zweite Kategorie.
Ich habe dann ausprobiert, das ganze über FitToPagesTall zu lösen. Das führt aber dazu, dass der Seitenumbruch zwischen erster und zweiter Kategorie komplett ignoriert wird. Dabei scheint es egal, ob ich den Zeilenumbruch vor oder nach FitToPagesTall einfüge.
Ziel ist letzten Endes, dass die Daten der ersten Kategorie komplett auf Seite 1 dargestellt werden und die Daten der zweiten Kategorie auf Seite 2. Gewissermaßen so als würde ich zunächst ein pdf mit FitToPagesTall =1 erst nur bis Ende der ersten Kategorie ein pdf erzeugen und dann ein weiteres für die zweite Kategorie erstellen und beide zusammenfügen.
Hat irgendjemand eine Idee, wie ich das bewerkstelligen kann? Vielen Dank für Eure Ideen!
Hier mein VBA-Skript:
Sub pdf_erstellen()
Dim tempPath As String
Dim tempfile As String
Dim wsCtrl As Worksheet
Dim Betr As String
Dim rse As String
Dim Today As Variant
Dim DatumWert As Variant
Dim Jahr As Variant
Dim foundRow As Long
Set wsCtrl = ThisWorkbook.Sheets("Ctrl")
Betr = wsCtrl.Range("A3").Value
DatumWert = wsCtrl.Range("B3").Value
Jahr = Year(DatumWert)
Today = Date
tempPath = "\\fileserver\folder\"
tempfile = tempPath & "_erzeugt_" & Today & "_Ref_" & DatumWert & ".pdf"
Dim lastRowCtrl As Long
lastRowCtrl = wsCtrl.Cells(wsCtrl.Rows.Count, "A").End(xlUp).Row
wsCtrl.ResetAllPageBreaks
foundRow = 0
For i = 14 To lastRowCtrl
If InStr(CStr(wsCtrl.Cells(i, 1).Value), "Betrieb:") > 0 Then
foundRow = i
Exit For
End If
Next i
wsCtrl.PageSetup.PaperSize = xlPaperA4
wsCtrl.PageSetup.Zoom = False
wsCtrl.PageSetup.Orientation = xlLandscape 'xlPortrait
wsCtrl.PageSetup.FitToPagesWide = 1
wsCtrl.PageSetup.FitToPagesTall = False
If foundRow > 0 Then
wsCtrl.HPageBreaks.Add Before:=wsCtrl.Rows(foundRow)
End If
wsCtrl.Range("A5:I" & lastRowCtrl).ExportAsFixedFormat Type:=xlTypePDF, Filename:=tempfile, OpenAfterPublish:=True
Dim pdfApp As Object
Set pdfApp = CreateObject("Shell.Application")
pdfApp.Open tempfile
End Sub
Anzeige