Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Ausgabe als PDF von 4 Tabellenblättern auf Knopfdruck
#1
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
Antworten Top
#2
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)
Antworten Top
#3
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.
Antworten Top
#4
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.
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:
  • derHoepp
Antworten Top
#5
(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
Antworten Top
#6
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


Angehängte Dateien
.xlsb   Druckbereich_PDF_Alle_und_Einzeln.xlsb (Größe: 46,46 KB / Downloads: 5)
________
Servus
Case
Antworten Top
#7
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:
  • derHoepp
Antworten Top
#8
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?
Antworten Top
#9
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)
Antworten Top
#10
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)
Antworten Top


Gehe zu:


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