Collapse column

Autor Thema: Excel 2013 VBA: mehrere Sheets in eine pdf exportieren  (Gelesen 6325 mal)

Offline noobzilla

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2013
Excel 2013 VBA: mehrere Sheets in eine pdf exportieren
« am: Juli 05, 2014, 15:24:56 Nachmittag »
Moin zusammen,
ich weis, das Thema wurde hier schon behandelt, jedoch bringt mich keiner der Threads zur Lösung meines Problems.
Ich habe in meinem workbook 15 Tabellenblätter, die ich in einem userform per Checkbox zum pdf-export auswählen kann. Soweit so gut, die Syntax für den Export funktioniert auch für einzelne Tabellenblätter, jedoch nicht für meine String-variable.
Doch zuerst zum Code. Ich erzeuge ein string-array, welches die Tabellenblattnamen der Checkboxen aus dem UserForm enthält.
Das Array sieht also vom Inhalt ca. so aus: sheetarray()={Januar, Februar, Oktober, Jahresübersicht}
Anschließend erzeuge ich mit folgender Schleife daraus einen String: (die Variable Counter wird vorher bei jedem neuen Eintrag ins array erhöht und dient als "Füllstandsanzeige" des arrays)
  For i = 0 To (counter)
        If i = 0 Then sheetstring = sheetstring & Chr(34) & sheetarray(i) & Chr(34)
        If i > 0 Then sheetstring = sheetstring & ", " & Chr(34) & sheetarray(i) & Chr(34)
  Next i
Dieser String macht aus meinem Beispielarray den String
      "Januar", "Februar", "Oktober", "Jahresübersicht" Diesen lasse ich mir danach in einer MsgBox anzeigen und kann so sicher sein, dass er richtig ist.

Nun möchte ich mithilfe von Sheets(Array(sheetstring)).Select diese Blätter auswählen, um sie als pdf zu exportieren. Leider kommt bei diesem Befehl der Laufzeitfehler 9. Wenn ich statt der Variable sheetstring manuell den String eintrage (also Sheets(Array("Januar", "Februar", "Oktober", "Jahresübersicht")).Select), exportiert Excel die genannten Tabelleblätter anstandslos in eine gemeinsame pdf.
Da ich keine if- oder case- schleife mit sämtlichen Kombinationsmöglichkeiten schreiben möchte, bin ich auf der Suche nach einer eleganten Möglichkeit. ein Sheets(Array(sheetarray(0) & ", " & sheetarray(1) & usw...)).Select erscheint mir wenig sinnvoll, da ich dieses ja nicht variabel ist.

Meine Vermutung ist, dass vba den gesamten String  in Anführungszeichen einfügt, also als:
        Sheets(Array(""Januar", "Februar", "Oktober", "Jahresübersicht"")).Select
Ein Abändern der Schleife in:
  For i = 0 To (counter)
        If i = 0 Then sheetstring = sheetstring & sheetarray(i)
        If i > 0 Then sheestring = sheetstring & Chr(34) & ", " & Chr(34) & sheetarray(i)
  Next i
schafft leider keine Abhilfe. Damit wollte ich einen String erzeugen, der am Anfang und Ende keine Anführungszeichen besitzt:
        Januar", "Februar", "Oktober", "JahresübersichtEine Adressierung der Tabellenblätter über die Nummern kommt für mich nicht in Frage, abgesehen davon gehe ich auch davon aus, dass dort das gleiche Problem auftreten würde...

Gibt es eine elegante Lösung für mein Problem?
Vielen Dank im Voraus für eure Bemühungen!

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline mumpel

  • Spezialist für RibbonX-Programmierung
  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 195
    • Profil anzeigen
    • Microsoft-Office-Add-Ins
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Excel 2013 VBA: mehrere Sheets in eine pdf exportieren
« Antwort #1 am: Juli 05, 2014, 15:55:13 Nachmittag »
Hallo!

Die Tabellenblätter in eine neue Arbeitsmappe kopieren und dann diese Arbeitsmappe exportieren.

Schau Dir mal mein Tool Tabellen in PDF umwandeln an. Dazu die in der ZIP-Datei enthaltenen Anleitungen lesen. Mit diesem Tool (für "ExportAsFixedFormat" und für den PDF-Creator) hast Du ein paar mehr Möglicheiten. Das VBA-Kennwort ist ein kleines a.

Gruß, René

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.