PDF mit 2 Druckbereichen erstellen (VBA)
#1
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 ?

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
Dieser Code macht es mit den Druckbereichen richtig aber halt auf 4 Seiten


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
Antworten Top
#2
Hallo,

(20.10.2024, 11:03)thrustssc schrieb: Vielleicht kann mir dabei ja jemand helfen

wobei jetzt genau?

Gruß, Uwe
Antworten Top
#3
Na das ich Pro Druckbereich eine Seite hab aktuell klappt beides nicht zusammen entweder ich hab 4 Seiten so wie im Code 1 oder hab beide Bereiche auf einer Seite wie in Code 2 ich bekomme das nicht hin das er mir die beiden Bereiche jeweils auf eine Seite als PDF druckt
Antworten Top
#4
Und wenn du die Datei nur ausdruckst? Wieviele Seiten sind das und ist das dann die richtige Anzahl ?
Antworten Top
#5
Wenn ich die datei normal an den Drucker Schicke dann sind es 2 Seiten da ich ja bei den Druckeinstellungen das dementsprechend skalieren kann "Blatt auf einer Seite darstellen"
Antworten Top
#6
Dann brauchst du doch nur als Drucker "Microsoft Print To PDF" auszuwählen, dann hast du, was du willst.
Antworten Top
#7
Ne dann hab ich ja nicht was ich will. Ich möchte ja das ich in der Datei nen Button anklicke und das dann so passiert. So ganz ohne Grund werd ich das so nicht haben wollen. Was schreibst denn unter die ganzen anderen Beiträge ? Sollen Taschenrechner nehmen dann haben die auch was sie wollen oder Stift und Papier und sollen sich ne Tabelle malen....
Wenn es mit VBA nicht geht ok dann kann man das sagen dann find ich ne andere Lösung
Antworten Top
#8
Schwer von Kapee, oder? 
ICH weiss noch, was ich tue und sage. Aber ich kann dir gerne alles VORKAUEN.
" als Drucker "Microsoft Print To PDF auswählen" und drucken lassen kann man SOGAR mit VBA. Wahnsinn - oder ???
" Was schreibst denn unter die ganzen anderen Beiträge ? " ??? DAS macht die Forumssoftware - nicht ICH !

Hier noch besser VORGEKAUT:

Dim Drucker, pfad, Datei
Drucker = ActivePrinter
ActivePrinter = "Microsoft Print to PDF auf Ne00:"
pfad= "C:\MeinPfad\"
Datei = "Meine Datei"
ActiveWorkbook.PrintOut _
    Copies:=1, _
    PrintToFile:=True, _
    Collate:=True, _
    PrToFilename:=pfad & Datei & ".pdf", _
    IgnorePrintAreas:=False
ActivePrinter = Drucker
Antworten Top
#9
Dann entschuldige ich mich ich dachte du wolltest das ich von Hand auf drucken gehe und den pdf Drucker auswähle und dann die pdf erstelle. Das hab ich getestet es funktioniert nur wenn ich beide Bereiche einzeln Drucke dann klappt es. Ansonsten hab ich auch mit dem Microsoft Drucker das ich entweder 4 Seiten hab oder alles auf einer Seite
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste