Hallo,
ich suche nach einer Lösung für folgendes Problem.
Ich habe eine Exceltabelle mit 4 Tabellenblättern.
Auf den vier Tabellenblättern habe ich jeweils Druckbereiche definiert.
Im ersten Tabellenblatt habe ich einen Knopf - ausserhalb des Druckbereiches platziert.
Betätigt man den Knopf, soll sich ein Fenster öffnen.
Hier legt man einen Dateinnamen fest ggf. den Speicherort und die pdf mit allen 4 Tabellenblättern wird als eine Datei ausgegeben.
Hätte jemand einen Hinweis wie so etwas mittels VBA geht.
Vielen dank im voraus
MFG
Moin!
• zunächst musst Du die 4 Blätter gruppieren (Makrorekorder hilft)
• mit
Application.GetSaveAsFilename(,"PDF-Dateien (*.pdf), *.pdf") holst Du Dir den kompletten Dateipfad
• diesen übergibst Du an die
Worksheet.ExportAsFixedFormat-Methode
Du wolltest ja Hinweise und keinen pfannenfertigen Code.
Gruß Ralf
Moinsen,
wie weit bist du denn schon? und welches Wissen fehlt dir noch?
Mehrere Blätter gleichzeitig exportieren kannst du über die .ExportAsFixedFormat-Methode erreichen, indem du vorher die zu exportierenden Blätter selektierst und die Methode auf das Selection-Hilfsobjekt anwendest:
Code:
Sub Test()
Sheets(Array("eins","zwei","drei")).Select
Selection.ExportAsFixedFormat xlTypePDF, "C:\Daten\Dateiname.pdf"
End Sub
Noch viel einfacher wird es natürlich, wenn du einfach alles auf ein Blatt packst und deine Anwender einfach den eingebauten Speicher-Dialog benutzen können.
Viele Grüße
derHöpp
Edit: Die Workbook.ExportAsFixedFormat-Methode funktioniert noch besser, wenn kein einzelnes Blatt ausgeschlossen werden muss. Dann sparst du dir das Hilfsobjekt.
Ich war schneller!
Etwas Wichtiges habe ich noch vergessen:
Die Gruppierung muss entweder manuell oder programmatisch (Tabelle1.Select) wieder aufgehoben werden!
Und derHoepp hat natürlich Recht!
Wenn alle Blätter exportiert werden sollen, nimmt man die
Workbook.ExportAsFixedFormat-Methode.
(02.03.2024, 09:49)derHoepp schrieb: [ -> ]Mehrere Blätter gleichzeitig exportieren kannst du über die .ExportAsFixedFormat-Methode erreichen, indem du vorher die zu exportierenden Blätter selektierst und die Methode auf das Selection-Hilfsobjekt anwendest:
Mit
Selection funktioniert das bei mir nicht. Es werden nur leere Seiten erzeugt.
Präzisierung: Die Adresse des im ersten Blatt markierten Zellenbereiches gilt für alle selektierten Blätter beim PDF-Export.
Gruß, Uwe
Moin,
habe das vor ca. 12 Jahren mal gemacht und lade es hier hoch. Nimm dir raus was du brauchst und passe es an.
Hallöchen,
Zitat:Mit Selection funktioniert das bei mir nicht. Es werden nur leere Seiten erzeugt. Wink
Präzisierung: Die Adresse des im ersten Blatt markierten Zellenbereiches gilt für alle selektierten Blätter beim PDF-Export.
ist schon verrückt. Wenn man etwas selektiert, erwartet man ja bei Selection. in der nächsten Codezeile, dass es sich darauf bezieht ...
Funktionieren täte aber
Code:
Sub Test()
Sheets(Array("eins","zwei","drei")).Select
Activesheet.ExportAsFixedFormat xlTypePDF, "C:\Daten\Dateiname.pdf"
End Sub
Wobei es (fast) wieder verrückt ist, dass in dieser Selection alle Sheets aktiv sind.
Andererseits nicht, in dem Spezialfall kann man ja auch über mehrere Blätter hinweg Daten eingeben usw.
Hallo zusammen,
vielen dank erst einmal.
Ich bin leider erst jetzt dazu gekommen alles zu probieren und zu testen.
Ich habe aber noch zwei Fragen.
1. Ich hätte es gern, dass sich bei der pdf Ausgabe ein Fenster öffnet, damit ich den Speicherort individuell wählen kann.
Leider habe ich dies bisher nicht hinbekommen.
Hier mal mein Script mit dem ich es probiert habe
Sub PDF()
Sheets(Array("Seite 1", "Seite 2", "Seite 3", "Seite 4")).Select
ActiveSheet.ExportAsFixedFormat xlTypePDF(xlDialogSaveAs).Show
End Sub
Sicherlich habe ich in der vierten Zeile irgend einen Fehler.
2. PDF -> Ausgabe unterschiediche Ergebnisse.
Etwas merkwürdig ist die PDF - Ausgabe - oder beeinflusst diese Angabe - xlTypePDF - den Druckbereich?
Gehe ich auf "Drucken" und wähle Microsoft Print to Pdf - erfolgt die Ausgabe wie gewünscht.
Der Versuch mittels Script(VBA) führt dazu, dass sich der ausgegebene Bereich verändert hat.
Ein Teil am rechten Rand fehlt und wird auf der nächsten Seite ausgegeben.
Warum das?
Hallöchen,
1)
Es gibt verschiedene Dialoge zur Ordnerwahl, hier mal eine Variante:
Code:
Dim strPath As String
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show <> -1 Then Exit Sub
strPath = .SelectedItems(1)
End With
Die Variable strPath könntest Du dann als Pfadangabe für die Datei nehmen, im Prinzip so:
Activesheet.ExportAsFixedFormat xlTypePDF, strpath & "\Dateiname.pdf"
--> strPath hat keinen Backslash am Ende, der muss also, wie gezeigt, dazu programmiert werden
2)
Eventuell wirken bei den verschiedenen Ausgabearten unterschiedliche Ränder für den nicht "druckbaren" Bereich. Da hilft eventuell eine andere Randeinstellung oder die Ausgabe aller Spalten auf einer Seite(nbreite)
Moin!
Und hier noch die Variante mit GetSaveAsFilename.
Ich wechsel hier das Laufwerk und gebe einen Pfad vor:
Sub SeitenPDF()
Dim Pfad$, Dateiname
Pfad = "I:\Temp"
ChDrive "I"
ChDir Pfad
Dateiname = Application.GetSaveAsFilename(, "PDF-Dateien (*.pdf), *.pdf")
If Dateiname <> False Then
Sheets(Array("Tabelle1", "Tabelle2")).Select
ActiveSheet.ExportAsFixedFormat xlTypePDF, Dateiname
Tabelle1.Select
End If
End Sub
Gruß Ralf