Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Bestimmte Bereiche aller Tabellenblätter als PDF speichern

Forumthread: Bestimmte Bereiche aller Tabellenblätter als PDF speichern

Bestimmte Bereiche aller Tabellenblätter als PDF speichern
12.12.2024 15:18:05
Christian
Hallo zusammen,

ich möchte von meiner Arbeitsmappe bei allen sichtbaren Tabellenblättern den Bereich A1:I50 als PDF speichern.

Bis jetzt habe ich es nur geschafft, dass dieser Bereich vom aktivem Sheet als PDF gespeichert wird


DateiName = Range("L21") & Range("O21") & Range("P21") & Range("Q21") & "\" & Range("R21") & "_" & Range("S21") & "_" & Range("T21") & "\" & Format(Range("B8"), "YYYYMMDD_") & Range("B4") & "_" & Range("F8") & (".pdf")


Range("A1:I50").ExportAsFixedFormat Type:=x1TypePDF, Filename:=DateiName, Quality:=x1QualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Hat jemand einen Code, wie auch die restlichen Tabellenblätter mit hineinbekomme?

Vielen Dank und VG
Christian
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speichern
12.12.2024 17:27:41
Piet
Halloo

probiere es bitte mal mit diesem Code. For jedes Range gehört jezt ein Punkt! Bitte NICHT vergessen.
Damit bezieht sich Range jetzt immer auf das definierte Sheet. Nicht mehr auf das aktuelle Sheet!

mfg Piet

Sub test2()

Dim Sht As Worksheet
For Each Sht In ThisWorkbook.Sheets
With Sht
DateiName = .Range("L21") & .Range("O21") & .Range("P21") & .Range("Q21") & "\" & .Range("R21") & "_" & .Range("S21") & "_" & .Range("T21") & "\" & Format(.Range("B8"), "YYYYMMDD_") & .Range("B4") & "_" & .Range("F8") & (".pdf")

.Range("A1:I50").ExportAsFixedFormat Type:=x1TypePDF, Filename:=DateiName, Quality:=x1QualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
Next Sht
End Sub
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speichern
12.12.2024 17:31:10
Piet
Nachtrag - das klappt aber nur wenn -kein Dateiname- doppelt vorkommt!
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speichern
12.12.2024 20:01:52
daniel
ja, das musst du sicherstellen.
wäre es hilfreich, den Tabellenblattnamen in den Dateinamen einzubauen?
damit sollte dann die Eindeutigkeit gegeben sein.
ansonsten müsste man prüfen beispielsweise mit diesem Code:

Sub test2()

Dim Sht As Worksheet
Dim DateiName As String

Dim dic As Object
Dim x, txt
Set dic = CreateObject("Scripting.dictionary")
'--- Dateinamen vorab ermitteln und zählen
For Each Sht In ThisWorkbook.Sheets
DateiName = .Range("L21") & .Range("O21") & .Range("P21") & .Range("Q21") & "\" & .Range("R21") & "_" & .Range("S21") & "_" & .Range("T21") & "\" & Format(.Range("B8"), "YYYYMMDD_") & .Range("B4") & "_" & .Range("F8") & (".pdf")
dic(DateiName) = dic(DateiName) + 1
Next
'--- prüfen, ob ein Dateiname meherfach vorkommt
For Each x In dic.keys
If dic(x) > 1 Then txt = txt & vbLf & x
Next
If txt > "" Then
MsgBox "Folgende Dateinamen sind doppelt! Bitte korrigieren" & txt, vbCritical
Else
For Each Sht In ThisWorkbook.Sheets
With Sht
DateiName = .Range("L21") & .Range("O21") & .Range("P21") & .Range("Q21") & "\" & .Range("R21") & "_" & .Range("S21") & "_" & .Range("T21") & "\" & Format(.Range("B8"), "YYYYMMDD_") & .Range("B4") & "_" & .Range("F8") & (".pdf")

.Range("A1:I50").ExportAsFixedFormat Type:=x1TypePDF, Filename:=DateiName, Quality:=x1QualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
Next Sht
End If

End Sub



andere Frage: soll jedes Blatt in eine eigene Datei oder wäre es dir lieber, eine PDF-Datei zu erstellen, die dann alle Blätter als Seiten enthält?

Gruß Daniel

Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speiche
18.12.2024 08:20:23
Christian
Hallo zusammen,

vielen Dank für eure Beiträge. Sorry für die späte Antwort, aber ich war auf Dienstreise.

Leider klappt das mit dem Code bei mir nicht.

Beim ersten Versuch (Code von Piet) kommt die Fehlermeldung in Excel: Laufzeitfehler '1004': Das Dokument wurde nicht gespeichert. Das Dokument ist möglicherweise geöffnet oder beim Speichern ist ein Fehler aufgetreten. Beim Debuggen wird auf diese Stelle verwiesen:

.Range("A1:I50").ExportAsFixedFormat Type:=x1TypePDF, Filename:=DateiName, Quality:=x1QualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Bei dem Code von Daniel kommt die Meldung: Fehler beim Kopilieren: Unzulässiger oder nicht ausreichend definierter Verweis.
For Each Sht In ThisWorkbook.Sheets

DateiName = .Range("L21") & .Range("O21") & .Range("P21") & .Range("Q21") & "\" & .Range("R21") & "_" & .Range("S21") & "_" & .Range("T21") & "\" & Format(.Range("B8"), "YYYYMMDD_") & .Range("B4") & "_" & .Range("F8") & (".pdf")
dic(DateiName) = dic(DateiName) + 1
hier wird das
.Range("L21")
und die folgenden nicht erkannt.

Kann mir jemand sagen, woran das liegt? wenn ich die Punkte wieder wegmache, wird wieder nur das aktive Blatt gespeichert (Bei Variante von Piet)
Bei Daniels Variante kommt dann immer Name ist schon vorhanden, bitte ändern.

Vieln Dank und VG
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speiche
18.12.2024 08:46:22
ralf_b
ein Hinweis deinerseits das du (fast)keinen Schimmer von VBA hast, wäre hilfreich gewesen. Danach richtet sich schließlich die Antwort, die du bekommst.
Die Fehlermeldungen weisen darauf hin das du versuchst eine bereits existierende Datei zu erstellen. Es gab hier den Hinweis das Eindeutigkeit gegeben sein muß. Scheinbar hast du das nicht beachtet.
Sind die Zellen, deren Werte im Code verwendet werden, auch immer korrekt befüllt?
Hast du auch andere Sheets als nur Worksheets? z.b. reine Diagrammblätter.
Beantworte die Fragen, die die Kollegen dir gestellt hatten. Es ist immerhin dein Problem, das du gelöst haben möchtest.
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speiche
18.12.2024 09:59:23
Christian
Hallo ralf,

sry die Frage hatte ich überlesen.

Ich möchte alles in einer PDF haben. Also alle eingeblendeten Blätter.

Speichername soll
DateiName = Range("L21") & Range("O21") & Range("P21") & Range("Q21") & "\" & Range("R21") & "_" & Range("S21") & "_" & Range("T21") & "\" & Format(Range("B8"), "YYYYMMDD_") & Range("B4") & "_" & Range("F8") & (".pdf")
sein.

Ich habe zudem ein Blatt, bei dem nur eine PDF eingefügt ist. Diese sollte auch in die neue PDF mit rein (wenn möglich)

Kurz gesagt.

1 Seite =Bericht
+ x Seiten (Es können mehrere Berichte mit dem selben Aufbau wie Seite 1 hinzugefügt werden)
x +1 Enthält nur eine PDF
x + 2 Abschlussseite (kann hinzugefügt werde, muss aber nicht) (Aufbau wie Seite 1)

Diese Seiten Seiten sollen dann alle in eine PDF

Danach wird das ganze per Email verschickt, aber das habe ich schon hinbekommen.

Ich hoffe ich konnte alle offenen Fragen beantworten.

Vielen Dank und VG
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speiche
18.12.2024 11:18:31
Oberschlumpf
Hi,

zuerst musst du ein Hilfstabellenblatt hinzufügen
Im neuen Tabellenblatt müssen dann untereinander aus allen anderen, eingeblendeten Blättern die Wunsch-Zellbereiche eingefügt werden - ich würde For/Next verwenden.
Wenn das erledigt ist, kannst du das neue Tabellenblatt als PDF mit dem Wunschverzeichnis + -namen exportieren.
Jetzt kannst du das neue Tabellenblatt wieder löschen.

Ciao
Thorsten
Anzeige
AW: Bestimmte Bereiche aller Tabellenblätter als PDF speiche
19.12.2024 01:15:18
ralf_b
"Ich habe zudem ein Blatt, bei dem nur eine PDF eingefügt ist."
das solltest du genauer erklären. Es ist ein Unterschied ob man nur ein paar Bereiche selektieren oder noch irgendwelche eingefügten Objekte anfassen muß.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18