Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Markierte Sheets in 1 pdf speichern

Markierte Sheets in 1 pdf speichern
28.03.2024 17:13:37
Herbert Grom
Hallo,

leider weiß ich nicht, oder nicht mehr, wie das geht. Ich habe schon gegoogelt und sogar ChatGPT befragt, aber leider ohne Erfolg. Bzw. hat mir ChatGPT diesen Code geliefert, doch da meckert er mir "And ws.Selected" und ich weiß nicht warum. Ich habe es auch schon mit "ws.Select" erfolglos probiert. Habt ihr mir da bitte einen Tipp?

Sub ExportSelectedSheetsAsPDF()

Dim ws As Worksheet
Dim pdfFileName As String
Dim selectedSheets As New Collection

' Erstelle einen Dateinamen für das PDF
pdfFileName = "C:\Lebensgefuehl\Rezepte\PDFs\SelectedSheets.pdf"

' Füge markierte Arbeitsblätter zur Collection hinzu
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible And ws.Selected Then
selectedSheets.Add ws
End If
Next ws

' Überprüfe, ob mindestens ein Arbeitsblatt markiert ist
If selectedSheets.Count = 0 Then
MsgBox "Keine markierten Arbeitsblätter gefunden.", vbExclamation
Exit Sub
End If

' Exportiere die markierten Arbeitsblätter als ein PDF-Dokument
Sheets(selectedSheets(1).Name).Select ' Wähle das erste Arbeitsblatt aus
Sheets(selectedSheets(1).Name).Activate ' Aktiviere das erste Arbeitsblatt

' Exportiere die markierten Arbeitsblätter als PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

' Füge die restlichen markierten Arbeitsblätter zum PDF hinzu
For i = 3 To selectedSheets.Count
Sheets(selectedSheets(i).Name).Select False ' Wähle das nächste Arbeitsblatt aus
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Next i

MsgBox "Die markierten Arbeitsblätter wurden als PDF-Dokument gespeichert.", vbInformation
End Sub


Danke und Servus

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:25:50
ralf_b
so geht das z.b. in einem meiner Projekte.

arrPlanSheets ist ein Array mit den Namen der betreffenden Worksheets

  Worksheets(arrPlanSheets).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & sFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=True
Anzeige
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 18:19:19
Herbert Grom
Hallo Ralf, hallo Rolf,

so klappts jetzt:

Sub ExportSelectedSheetsAsPDF()

Dim ws As Worksheet, i&
Dim pdfFileName As String
Dim selectedSheets As New Collection

' Erstelle einen Dateinamen für das PDF
pdfFileName = "C:\Lebensgefuehl\Rezepte\PDFs\TEST.pdf"

' Füge markierte Arbeitsblätter zur Collection hinzu
For Each ws In ThisWorkbook.Windows(1).selectedSheets
selectedSheets.Add ws
Next ws

' Überprüfe, ob mindestens ein Arbeitsblatt markiert ist
If selectedSheets.Count = 0 Then
MsgBox "Keine markierten Arbeitsblätter gefunden.", vbExclamation
Exit Sub
End If

' Exportiere die markierten Arbeitsblätter als PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False

' Wähle die Arbeitsblätter aus
For i = 3 To selectedSheets.Count
Sheets(selectedSheets(i).Name).Select False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Next i

MsgBox "Die markierten Arbeitsblätter wurden als PDF-Dokument gespeichert.", vbInformation
End Sub


Vielen Dank und Servus
Anzeige
AW: Bitte, gern geschehen.
28.03.2024 18:28:35
Rolf
Gruß Rolf
eigentlich sollte doch ....
29.03.2024 00:01:20
Uduuh
Hallo,
das reichen:
Sub export()

Const strFName = "c:\test\test.pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, strFName
End Sub

Gruß aus'm Pott
Udo
AW: eigentlich sollte doch ....
29.03.2024 12:14:02
Herbert Grom
Hi Udo,

vielen Dank für deinen Tipp, doch wenn ich nicht irre, wird damit nur das aktive Sheet gespeichert und nicht alle markierten.

Servus
es werden alle markierten gespeichert
29.03.2024 12:27:17
Uduuh
Hallo,
hab ich getestet.
Und worin besteht der Sinn, alle ausgewählten Sheets nochmals auszuwählen, wie in deinem Code?
Anschließend machst du dann auch nichts anderes als ich, außer mehrere PDF zu erzeugen, die aber immer wieder überschrieben werden, so dass nur das letzte übrig bleibt.

Und das
   ' Überprüfe, ob mindestens ein Arbeitsblatt markiert ist

If selectedSheets.Count = 0 Then
MsgBox "Keine markierten Arbeitsblätter gefunden.", vbExclamation
Exit Sub
End If

ist imho Unsinn, da es immer ein ausgewähltes Blatt gibt.

Gruß aus'm Pott
Udo
Anzeige
AW: es werden alle markierten gespeichert
30.03.2024 13:07:36
Herbert Grom
Hi Udo,

sorry, wie konnte ich nur an deinem Code Zweifeln? Er funktioniert perfekt!!! Mich hat nur das "ActiveSheet.ExportAsFixedFormat xlTypePDF, pdfFileName" hier verwirrt. Ich hatte ihn auch allerdings nicht getestet, da wir Gestern Nachmittag einen Enkel-Termin hatten. Vielen Dank und schöne Ostern!

Servus
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:32:51
Herbert Grom
Hallo Ralf,

vielen Dank für deinen Tipp, der schon sehr gut ist, doch der Knackpunkt ist ja, wie ich die selektierten Sheets in das Array bekomme!

Servus
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:38:08
ralf_b
Wie kann man denn deine Sheets identifizieren? Bei mir geht das per Namensteil.
Ansonsten wenn die Sheets von Hand gewählt wurden, kannst du das Activewindow.selectedsheets nutzen.
Anzeige
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:43:19
Herbert Grom
Ja, mit dem Sheetnamen.
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:54:01
ralf_b
ich hätte da ne Function, Die nach Namenspräfix guckt. Geht aber auch per Select case wenn du die Blattnamen kennst.



Function getPresetSheets() As Variant
'zum Sammeln der Blätternamen

Dim X As Long
Dim sSheetString As String

For X = 1 To ThisWorkbook.Worksheets.Count
If Left(Worksheets(X).Name, 3) = "LP_" Then
' Kommagetrennter Text erstellen
sSheetString = sSheetString & "," & Worksheets(X).Name
End If
Next
'führendes Komma entfernen
sSheetString = IIf(sSheetString = "", "", Right(sSheetString, Len(sSheetString) - 1))

' bei Rückgabe Durch split in Array umwandeln
getPresetSheets = Split(sSheetString, ",")

End Function
Anzeige
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 17:56:50
Herbert Grom
Ich befürchte, dass wir aneinander vorbeireden, denn ich wollte die vorher manuell markierten/ausgewählten Sheets als pdf speichern. Die Namen sind da eigentlich sekundär, denke ich.
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 18:02:35
ralf_b
na dann Activewindow.selectedsheets
AW: Markierte Sheets in 1 pdf speichern
28.03.2024 18:09:35
Rolf
Hallo Herbert,

versuch mal
For Each ws In ThisWorkbook.Window(1).SelectedSheets

dann brauchst du evtl. gar keine Collection mehr. Falls doch, gib der Collection einen anderen Namen
(SelectedSheets ist ja dann schon reserviert)
Und du brauchst, denke ich, auch nicht mehr auf .vbsheetvisible zu prüfen.

Gruß Rolf
AW: fehlt ein s! Windows(1).SelectedSheets
28.03.2024 18:13:05
Rolf

Gruß Rolf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige