HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 Business
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
daniel
05.05.2026 19:23:54
AW: Zeilenumbruch und fittopagestall bei pdf-Export
Hi
"harter Zeilenumbruch" + Autofit passt nicht zusammen.
Entweder Autofit oder harter Zeilenumbruch.

Wie soll denn der Ausdruck sein?
Sollen die Inhalte auf beiden Blättern gleich groß sein oder darf Seite 1 kleiner sein als Seite 2?

das einfachste ist vermutlich wenn du die Inhalte auf zwei Tabellenblätter verteilst und diese dann gemeinsam ins PDF schreibst.
den Autofit machst du dann für beide Seiten auf 1 Seite breit und 1 Seite hoch.

das Kopieren der Inhalte auf 2 Blätter bekommst du hoffentlich alleine hin

Um zwei Tabellenblätter in ein PDF zu schreiben musst du sie vorher als Gruppe selektieren.
das geht entweder über die selektion als Array:

    Sheets(Array("Tabelle1", "Tabelle2")).Select

oder du selektierst die Blätter nacheinander und gibst ab dem zweiten Blatt dann FALSE oder 0 als Parameter an. Das ist für VBA der Hinweis, das neu selektierte Blatt nicht als einziges zu selektieren, sondern zur Gruppe hinzuzufügen.
    Sheets("Tabelle1").Select

Sheets("Tabelle2").Select False


der Ausdruck ins PDF aller selektierten Blätter erfolgt dann ganz normal:
ActiveSheet.ExportAsFixedFormat ...


Gruß Daniel
Als Antwort auf diesen Beitrag
jonas.poskowsky
05.05.2026 17:22:39
Zeilenumbruch und fittopagestall bei pdf-Export
Hallo allerseits,

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
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.