20.10.2024, 11:03
Hallo zusammen,
ich schaffe es nicht mit VBA ohne ein zusätzliches Drittprogramm eine PDF mit richtiger Skalierung zu erstellen. Entweder ich habe 4 Seiten oder alles auf einer Seite.
Erste Frage ist dieses überhaupt möglich ?
Dieser Code macht es mit den Druckbereichen richtig aber halt auf 4 Seiten
Und mein anderer Ansatz wäre
Und dieser macht alles auf eine Seite
Wenn es generell nicht möglich ist dann muss ich das anders machen aber cool wäre es schon. Vielleicht kann mir dabei ja jemand helfen
ich schaffe es nicht mit VBA ohne ein zusätzliches Drittprogramm eine PDF mit richtiger Skalierung zu erstellen. Entweder ich habe 4 Seiten oder alles auf einer Seite.
Erste Frage ist dieses überhaupt möglich ?
Code:
Sub ExportToPDF()
Dim ws As Worksheet
Dim pdfPath As String
Dim firstPageRange As Range
Dim secondPageRange As Range
' Arbeitsblatt
Set ws = ThisWorkbook.Sheets("Rufdienst WE")
pdfPath = ThisWorkbook.Path & "\MeinePDFDatei.pdf" ' Speichert die PDF im selben Ordner wie die Excel-Datei
'Querformat
ws.PageSetup.Orientation = xlLandscape
' Skalierung auf eine Seite
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.FitToPagesTall = False ' Dies erlaubt mehrere Seiten, wenn notwendig
' Definiere den Druckbereich
Set firstPageRange = ws.Range("D1:U94") ' Kombinierter Bereich für Seite 1 und Seite 2
ws.PageSetup.PrintArea = firstPageRange.Address
' Seitenumbruch
ws.HPageBreaks.Add Before:=ws.Range("D50") ' Setzt einen Seitenumbruch vor Zeile 50
' Exportiere
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Und mein anderer Ansatz wäre
Code:
Sub ExportToPDF()
Dim ws As Worksheet
Dim pdfPath As String
Dim firstPageRange As Range
Dim secondPageRange As Range
' Arbeitsblatt
Set ws = ThisWorkbook.Sheets("Rufdienst WE")
pdfPath = ThisWorkbook.Path & "\MeinePDFDatei.pdf" ' Speichert die PDF im selben Ordner wie die Excel-Datei
' Querformat
ws.PageSetup.Orientation = xlLandscape
' Druckbereich für Seite 1
ws.PageSetup.PrintArea = ws.Range("D1:U49").Address ' Bereich für Seite 1
' Skalierung
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.FitToPagesTall = 1
' Exportiere 1
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'Druckbereich für Seite 2
ws.PageSetup.PrintArea = ws.Range("D50:U94").Address ' Bereich für Seite 2
' Skalierung
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.FitToPagesTall = 1
' Exportiere 2
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Und dieser macht alles auf eine Seite
Wenn es generell nicht möglich ist dann muss ich das anders machen aber cool wäre es schon. Vielleicht kann mir dabei ja jemand helfen