Clever-Excel-Forum

Normale Version: VBA - Ausgabe als PDF von 4 Tabellenblättern auf Knopfdruck
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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! Wink
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. Wink
Präzisierung: Die Adresse des im ersten Blatt markierten Zellenbereiches gilt für alle selektierten Blätter beim PDF-Export.

Gruß, Uwe
Moin, 19

habe das vor ca. 12 Jahren mal gemacht und lade es hier hoch. Nimm dir raus was du brauchst und passe es an. 21
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
Seiten: 1 2