1.7k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo Helfer,
noch eine Makroergänzung gesucht.
Bisher steht dies im Makro:

For Each wks In ThisWorkbook.Worksheets
On Error Resume Next
ThisWorkbook.Worksheets(wks.Name).Copy
ActiveWorkbook.SaveAs (Pfad & wks.Name)
ActiveWorkbook.Close
Next wks

Statt "For Each wks..." sollen nur noch die Tabellen 2 bis 7 abgearbeitet werden. Wie muss diese Zeile dann lauten?

Vielen Dank im Voraus
mfg
Wolfgang

5 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Wolfgang!

Wenn ich es richtig verstanden habe, dann so (wieder ungetestet):

Dim intSheetsNr As Integer
For intSheetsNr = 2 To 7
On Error Resume Next
ThisWorkbook.Worksheets(intSheetsNr).Copy
ActiveWorkbook.SaveAs (Pfad & Sheets(intSheetsNr).Name)
ActiveWorkbook.Close
Next intSheetsNr


MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Oliver,
wenn ich das Makro Schritt für Schritt ausführe, wird diese Zeile zwar gelb markiert, aber nicht ausgeführt.
ActiveWorkbook.SaveAs (Pfad & Sheets(intSheetsNr).Name)
Ich habe auskommntiert:
ActiveWorkbook.Close
Dann habe ich nach ausführen des Makros, die 6 neuen ungespeicherten Dateien "Mappe16" bis Mappe20.

mfg

Wolfgang
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Oliver,

ActiveWorkbook.SaveAs (Pfad & Sheets(1).Name)
So funktionierts.

mfg

Wolfgang
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Wolfgang!

Dann wird die Datei aber immer nach dem Namen des 1. Tabellenblatts abgespeichert. Soll das so sein???

Das war in Deinem Ursprungscodeteil aber anders.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Oliver,
in dem Moment wo obige Zeile ausgeführt wird, ist das "ActiveWorkbook", die gerade erzeugte Arbeitsmappe, die nur dieses eine Tabellenblatt enthält.
Deshalb trat der in Antwort 2 beschriebene Fehler auf, denn der in intSheetsNr hinterlegte Wert geht in der neuen Arbeitsmappe ins Leere.
Nochmals Danke
mfg
Wolfgang
...