VBA mehrere Tabellen zur PDF zusammenfügen?
Hallo,
ich habe ein kleines Problem mit dem Erstellen von mehreren PFD-Seiten aus unterschiedlichen Tabellenblätter. Je nach Erfüllung der Bedingung (If-Abfrage) wird eine PDF erstellt.
Sofern nur ein eine Tabelle angesprochen wird, gibt es keine Probleme mit der Erstellung. Dabei ist es egal, ob die Tabelle oder zwei Seiten hat. Die Formatierung/Range ist korrekt und das Makro läuft durch.
Sheets("DUZ").Select
Range("A1:Y52").Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Aber soweit ich auf zwei oder mehr Tabellenblätter zugreife, gibt es Probleme:
Sheets(Array("Deckblatt", "Übersicht", "Tagebuch", "Ges", "Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Tagebuch_RZ_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Wie kann ich entsprechend die Range unterbringen, sodass es evtl. problemlos klappt?
'Sheets("Deckblatt").Select --> Hochformat (1 Seite)
'Range("A1:H43").Select
'Sheets("Übersicht").Select --> Querformat (1 Seite)
'Range("A1:R35").Select
'Sheets("Tagebuch").Select --> Hochformat (6 Seiten)
'Range("A1:V146").Select
'Sheets("Ges").Select --> Hochformat (1 Seite)
'Range("A1:G43").Select
'Sheets("DUZ").Select --> Querformat (2 Seiten)
'Range("A1:Y52").Select
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select
Aktueller Fehlerhinweis: Anwendungs- oder objektdefinierter Fehler.
Ich hatte es auch mal wie folgt versucht, aber dann stimmt die Formatierung nicht (wenn es einzeln gespeichert wird, ist sie aber richtig). Außerdem wird dann beim Schreibschutz rumgemeckert (am Ende werden die Blätter wieder mit Schreibschutz versehen). Jedenfalls gibt es diese Probleme beim einzelnen nicht.
Sheets("DUZ").Select
Range("A1:Y52").Select
Sheets("Reisekosten").Select
Range("A1:N57").Select
Sheets(Array("Reisekosten", "DUZ")).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Reisekosten_DUZ.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Hat jemand eine Idee?
Gruß
1 Antwort
Ich habe dies für mich so gelöst.
Alle Inhalte aus den einzelnen Seiten auf die "ExportSeite" für das PDF kopiert.
Auf dieser 'einzigen' Seite dann über das PrintArea Attribut die Dinge automatisiert in einzelne Seiten aufgeteilt:
Worksheets("PDF_Report").PageSetup.PrintArea = "$A$1:$P$" & xPositionTarget
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=KonKur, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
..da bei dir die Dinge aber auch Landscape sein sollen wird es etwas aufwendiger.
========
Bei dir ist eventuell dieses nicht korrekt: aktuell
'Sheets("Reisekosten").Select --> Hochformat (1 Seite)
'Range("A1:N57").Select
Besser 1:
Sheets("Reisekosten").Activate
Range("A1:N57").Select
Besser 2:
Sheets("Reisekosten").Range("A1:N57").Select
genau.
Ich hatte dieses "PDF_Erstellen" Sheet zwar permanent belassen und immer nur den vorigen Inhalt komplett gelöscht. Worksheets("PDR_Erstellen").Cells.DeleteContents
bevor dann der neue Inhalt als PDF gespeichert wurde.
Danke schonmal für die Antwort.
Dies hatte ich auch schonmal versucht, aber hatte nicht geklappt. Trotzdem werde ich es morgen so nochmals anpassen und versuchen.
Also wenn ich es richtig verstanden habe ist deine Idee alle zu kopierenden Tabellen in ein Sheet zu packen und entsprechend dies dann durch Seitenteilung in die PDF umzuwandeln. Im Anschluss kann ich den Sheet ja löschen lassen.
Stelle mir die Lösung aber etwas aufwendig vor, da jede Tabelle eine unterschiedliche Range hat und auch Querformat enthält.
Zudem sollten die Tabellen auch alle jeweills eine eigene PDF Seite haben.