VBA zum Speichern mehrerer Sheets in einem pdf
#1
Hallo,

es gibt ein Sheet "Deckblatt" sowie die Sheets "Tabelle1", "Tabelle2", ... , "Tabelle10".

Im Sheet "Deckblatt" stehen in Zelle A1 die Sheets, die zunächst gruppiert und dann als pdf gespeichert werden sollen (z.B. "Tabelle1", "Tabelle2", "Tabelle4", "Tabelle7").

Ein Makro entnimmt der Zelle A1 auf dem Sheet "Deckblatt" die zu gruppierenden Sheets und speichert anschließend ein pdf auf dem U-Laufwerk ab.

Mit folgendem Makro habe ich es versucht, leider ohne Erfolg...

Sub Tabellen_als_pdf_speichern()

Dim Auswahl As String

Auswahl = Worksheets("Deckblatt").Cells(1, 1).Value

Sheets(Array(Auswahl)).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="U:\pdf 1 2017 08 08.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

End Sub

Leider funktioniert das Makro nicht. :22:

Freue mich über jeden Hinweis und Tip!

Viele Grüße
Steffen
Top
#2
Hi Steffen,

nutze mal die Suche im Web mit den Begriffen:


Zitat:mehrere tabelen in pdf speichern vba


Da finden sich genug Lösungen für dein Problem.
Mit freundlichen Grüßen  :)
Michael
Top
#3
Hallo Zwergel,

vielen Dank für den Tip. Habe bereits die letzten Tage viel gegoogelt, habe jetzt aber doch noch was halbwegs passendes gefunden: http://www.office-hilfe.com/support/show...n-erzeugen

Leider ist der Code dort nicht variabel. Bei mir variiert die Zahl der Sheets je nach Auswahl.

Habe mal eine kurze Exceldatei erstellt und angehängt. Über die Zelle B6 im Sheet "Auswahl" steuert man die Auswahl der Sheets. Das VBA soll die jeweils ausgewählten Sheets aus dem Bereich B7:B10 entnehmen.

Habe den gegoogelten VBA-Code angepasst. Leider funktioniert er nicht:

Sub pdf_speichern()

    Dim arrBlätter() As String
    Dim Sheet As Integer
    Dim AnzahlSheets As Integer
        
    AnzahlSheets = Worksheets("Auswahl").Cells(4, 2).Value
    
    ReDim arrBlätter(1 To AnzahlSheets)
    
    For Sheet = 1 To AnzahlSheets Step 1
        
    arrBlätter(Sheet) = Worksheets("Auswahl").Cells(6 + Sheet).Value
    
    Next Sheet
    
    Sheets(arrBlätter).Select
    Sheets(arrBlätter(1)).Activate
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="U:\pdf1.pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=True
        
    'Deselektion der 3 Arbeitsblätter:
    Sheets("Auswahl").Select
End Sub


Vielen Dank im Voraus an alle, die sich mit meinem Problem befassen!!!

Viele Grüße
Steffen


Angehängte Dateien
.xlsm   Mappe 2017 08 09 1049.xlsm (Größe: 19,12 KB / Downloads: 3)
Top
#4
Hallo,

leider komme ich immer noch nicht weiter. :22: 

In meinem letzten Posting vom 9.8.17 habe ich eine Datei und einen VBA Code gepostet.

Ich bin wiklich auf Eure Hilfe angewiesen. Bin leider nicht sonderlich fit in VBA. Sorry!

Viele Grüße
Steffen
Top
#5
push!
Top
#6
(09.08.2017, 11:08)Steffen schrieb: Habe mal eine kurze Exceldatei erstellt und angehängt. Über die Zelle B6 im Sheet "Auswahl" steuert man die Auswahl der Sheets. Das VBA soll die jeweils ausgewählten Sheets aus dem Bereich B7:B10 entnehmen.

Hallo Steffen
Bring bitte die Beispieldatei im xlsx-Format (d.h. ohne Makro). Den Code haben wir ja und können ihn einbauen.
Gruss
Top
#7
Hallöchen,

was funktioniert denn genau nicht? Kommt eine Fehlermeldung? Ist nicht alles in der pdf? ...
Mit F8 kann man einen Code auch schrittweise durchgehen und prüfen, ob er alles tut und was in den Variablen steht.

Übrigens sollte man keine Standardsyntax (m.E. auch sehr ähnliches) für Excelobjekte, Methoden usw. als Variable benutzen --> Sheet
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Moin!
Wenn Du mehrere - aber nicht alle - Sheets in eine PDF exportieren willst, dann kannst Du nicht mit ActiveSheet.ExportAsFixedFormat arbeiten!

Dies geht dann nur über einen Umweg:
  • String-Array der gewünschten Tabellen bilden
    arr = Split("Tabelle1 Tabelle3 Tabelle5")
  • gewünschte Sheets in ein neues Workbook kopieren
    Worksheets(arr).Copy
  • das dann aktive neue Workbook in PDF umwandeln (NICHT Sheet.ExportAs… sondern Workbook.ExportAs…)
    ActiveWorkbook.ExportAsFixedFormat, xlTypePDF …
Wie Du das String-Array bildest, bleibt Dir überlassen:
hartcodiert wie oben, per Range oder per Multiselect-Listbox oder Checkboxes in einem UserForm.

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)
Top
#9
Hallo Ralf,

bei mir schon, jedenfalls in 2016. Aufgezeichneter Code:

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    Sheets(Array("Tabelle1", "Tabelle2")).Select
    Sheets("Tabelle1").Activate
    ChDir "I:\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="I:\Mappe1.pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
End Sub

In der Mappe gibt es 3 Tabellen, in jeder steht was drin. Im pdf sind es , wie gewünscht, 2.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Schon klar, André.

War etwas "unscharf" (eher falsch) formuliert, weil ich Gruppierungen grundsätzlich vermeide.
Ich empfinde meine Variante "schöner".

By the way:
Du setzt eine Gruppierung ohne sie am Ende wieder aufzulösen!
Hat schon manch Mappe zerschossen. ;)

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)
Top


Gehe zu:


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