Registriert seit: 02.03.2024
Version(en): 365
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 26.09.2022
Version(en): 2019
02.03.2024, 09:49
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2024, 09:49 von derHoepp.
Bearbeitungsgrund: Nachtrag nach besserem Wissen
)
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.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
02.03.2024, 09:51
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2024, 09:54 von RPP63.)
Ich war schneller! ![Wink Wink](https://www.clever-excel-forum.de/images/smilies/wink.gif)
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.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• derHoepp
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
02.03.2024, 11:58
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2024, 11:58 von Kuwer.)
(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. ![Wink Wink](https://www.clever-excel-forum.de/images/smilies/wink.gif)
Präzisierung: Die Adresse des im ersten Blatt markierten Zellenbereiches gilt für alle selektierten Blätter beim PDF-Export.
Gruß, Uwe
00202
Nicht registrierter Gast
Moin,
habe das vor ca. 12 Jahren mal gemacht und lade es hier hoch. Nimm dir raus was du brauchst und passe es an.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• derHoepp
Registriert seit: 02.03.2024
Version(en): 365
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?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
04.03.2024, 06:24
(Dieser Beitrag wurde zuletzt bearbeitet: 04.03.2024, 06:25 von RPP63.)
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
|