Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

Auswahl Tabellenblätter aus Range markieren

Auswahl Tabellenblätter aus Range markieren
Jockel
Hallo,
ich erzeuge mit per VBA Makro ein PDF:
Sub PDF()
Sheets("DECKBLATT").Select
Dim mySheets(), wks As Worksheet, n As Integer
ReDim mySheets(1 To Worksheets.Count - 8)
For Each wks In Worksheets
Select Case UCase(wks.Name)
Case "QUELLE", "TEMPLATE01", "TEMPLATE02", "TEMPLATE03", "TEMPLATE04", "TEMPLATE05", " _
TEMPLATE06", "TEMPLATE07"
Case Else
n = n + 1
mySheets(n) = wks.Name
End Select
Next
Sheets(mySheets).PrintOut Copies:=1, ActivePrinter:="Adobe PDF", Collate:=True
End Sub

Hier sollen alle Tabellenblätter in das PDF komnmen, die nicht "QUELLE", "TEMPLATE01", "TEMPLATE02 ...... sind.
das Funktioniert soweit.
Nun will ich ein PDF erzeugen, bei dem nur eine bestimmte Auswahl an Tabellenblätter in Frage kommt.
Die Namen der Tabellenblätter stehen im Tabellenblatt "Auswahl" in Range G7:G20 drin.
Wie kann ich alle Tabellenblätter, deren Namen sich in diesem Range befinden, markieren und dann wieder als PDF an den Druckertreiber (wie oben) senden.
Danke schon mal für Eure Hilfe
Gruß
Jockel
AW: Auswahl Tabellenblätter aus Range markieren
06.04.2011 15:58:19
Rudi
Hallo,
Sub ttx()
Dim mySheets
With Sheets("Auswahl")
mySheets = .Range(.Cells(7, 7), .Cells(Rows.Count, 7).End(xlUp)).Value
End With
Sheets(Application.Transpose(mySheets)).Select
End Sub

Gruß
Rudi
AW: Auswahl Tabellenblätter aus Range markieren
06.04.2011 22:00:04
Jockel
Hallo,
Danke, das funktioniert soweit gut.
Ich habe noch was vergessen: wie kann ich den von Rudi geschriebenen Code so erweitern, dass ich ausser den Tabellenblätter aus der G Spalte die Markierung um die Blätter "Daten" und "Ergebnis" erweitern kann.
Die beiden Blätter stehen nicht in der List und müssten manuell per Code hinzu gefügt werden.
Danke noch mal.
Gruß
Jockel
Anzeige
AW: Auswahl Tabellenblätter aus Range markieren
07.04.2011 00:11:49
fcs
Hallo Jockel,
etwa wie folgt.
Gruß
Franz
Sub ttx()
Dim mySheets(), iIndex As Integer, Zelle As Range, Bereich As Range
With Sheets("Auswahl")
Set Bereich = .Range(.Cells(7, 7), .Cells(.Rows.Count, 7).End(xlUp))
ReDim mySheets(1 To Bereich.Rows.Count + 2)
iIndex = 1: mySheets(iIndex) = "Daten"
iIndex = iIndex + 1: mySheets(iIndex) = "Ergebnis"
For Each Zelle In Bereich
iIndex = iIndex + 1
mySheets(iIndex) = Zelle.Text
Next
End With
Sheets(mySheets).Select
Erase mySheets
End Sub

AW: Auswahl Tabellenblätter aus Range markieren
07.04.2011 09:48:50
Jockel
Hallo Franz,
danke, dein Code funktioniert. Versuche nur gerade verzweifelt, den Code zu erweitern, damit ich ein drittes Blatt zusätzlich mit einbinden kann.
Kannst du mir das bitte noch zeigen, dann ist es glaube ich klar , wenn ich weitere Blätter bräuchte.
Danke
Jockel
Anzeige
Variante
07.04.2011 10:46:08
Rudi
Hallo,
Sub ttx()
Dim mySheets
With Sheets("Auswahl")
mySheets = .Range(.Cells(7, 7), .Cells(Rows.Count, 7).End(xlUp).Offset(2)).Value  'Offset= _
leere Elemente
End With
'Zusätzliche Blätter
mySheets(UBound(mySheets) - 1, 1) = "Daten"
mySheets(UBound(mySheets) - 0, 1) = "Ergebnis"
Sheets(Application.Transpose(mySheets)).Select
End Sub

Gruß
Rudi
AW: Auswahl Tabellenblätter aus Range markieren
07.04.2011 14:23:09
fcs
Hallo Jockel,
du muss die Größe des DatenArrays für die Namen entsprechend anpassen und vor der For-Next-Schleife Zeilen für das Zuweisen der festen Blattnamen einfügen.
Den Code hab ich beispielhaft für ein 3. Blatt angepasst.
Gruß
Franz
Sub ttx()
Dim mySheets(), iIndex As Integer, Zelle As Range, Bereich As Range
With Sheets("Auswahl")
Set Bereich = .Range(.Cells(7, 7), .Cells(.Rows.Count, 7).End(xlUp))
ReDim mySheets(1 To Bereich.Rows.Count + 3) '3 = Anzahl weiterer Blätter
iIndex = 1: mySheets(iIndex) = "Daten"
iIndex = iIndex + 1: mySheets(iIndex) = "Ergebnis"
iIndex = iIndex + 1: mySheets(iIndex) = "Blatt 3" '
'Vor der For-Next-Schleife die Namen der festen Namen zuweisen
For Each Zelle In Bereich
iIndex = iIndex + 1
mySheets(iIndex) = Zelle.Text
Next
End With
Sheets(mySheets).Select
Erase mySheets
End Sub

Anzeige
Hallo Franz u. Rudi, Danke hat gefolfen owT
08.04.2011 20:34:03
Jockel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige