Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Mehrere Sheets in neue Mappe kopieren





Frage

Hallo, ich habe folgendes Problem, ich habe eine Excel Mappe mit einem Sheet mit Zahlen und Formeln und 18 Sheets mit Diagrammen. Nun würde ich gerne die Zahlenwerte ohne Formeln in eine neue Datei kopieren. Das realisiere ich über folgendes Makro: [code] Sub ohne Werte() Dim Neuer_Dateiname Dim i As Integer Rem kopiert ganzes Blatt in neue Mappe, mit Formeln ActiveSheet.Copy Rem in neuer Mappe alle Zellen kopieren Cells.Copy Rem in neuer Mappe A1 wählen Range("A1").Select Rem dort nur die Werte einfügen Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Rem Kopiermodus beenden (Laufrahmen beenden) Application.CutCopyMode = False Rem s.o. Range("A1").Select Rem Speichernabfrage i = MsgBox("SpeichernAktion kann nicht rückgängig gemacht werden!" & Chr(13) & _ "" & Chr(13) & _ "Sicher? Dann OK, sonst ABBRECHEN" & Chr(13), 1 + vbExclamation, "Festwerte in neue Datei speichern") Rem wenn Abbrechen angeklickt, makroende If i = 2 Then Exit Sub Rem SpeichernDialog aufrufen Neuer_Dateiname = Application.GetSaveAsFilename(InitialFileName:="", fileFilter:="Excel-Arbeitsmappe, *.xls") If Neuer_Dateiname = False Then Exit Sub ActiveWorkbook.SaveAs Filename:=Neuer_Dateiname End Sub [\code] Nur leider kopiert mir das Makro nur mein Sheet mit den Zahlenwerten und nicht die restlichen Sheets. Da die Namen der Sheets das Datum, die sich ständig ändern, enthalten, kann ich es nicht mit [code]Sheets(Array("Zahlen", "Diagramm vom ...", "... " ... )).Select [/code] machen. Kann mir jemand einen Tipp geben? Vielen Dank Werner

Antwort 1 von coros

Hallo Werner,

wenn DU das Makro durch eine Schleife laufen läßt, würden Dir alle Blätter kopiert. Als Beispiel:

Dim iSheet A Integer

For iSheet = 1 to Sheets.Count
'hier dann Deine Befehle zum Kopieren
Next

Mit obiger Schleife werden alle Blätter einer Datei angesprochen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Werner_abc

Hallo Oliver,

den Gedanken mit der Schleifen hatte ich auch schon. Jedoch habe ich das Problem, wenn ich die Schleife so einfüge:


Dim iSheet A Integer
For iSheet = 1 to Sheets.Count
ActiveSheet.Copy
Next


Dann erzeugt er mir nur endlos viele Mappen.

Müsste ich nicht die bestehende Mappe akitviern, dort das erste Sheet kopieren und dann in die neue Mappe springen und es dort einfügen. Und das sooft, bis alle Sheets kopiert sind. Und das ohne die Bezeichnungen der einzelen Sheets zu benutzen.

Oder steh ich einfach auf dem Schlauch und ich check ned wie ich deine Schleifen einfügen muss.

Gruß

Werner

Antwort 3 von coros

Hallo Werner,

der nachfolgende Code kopiert Dir alle Tabellenblätter aus der Datei "Quelldatei.xls" in die Datei mit dem Namen "Zieldatei.xls". Die Dateinamen musst Du natürlich anpassen.

Dim iSheet As Integer
For iSheet = 1 To Workbooks("Quelldatei.xls").Sheets.Count
Workbooks("Quelldatei.xls").Sheets(iSheet).Copy _
Workbooks("Zieldatei.xls").Sheets(1)
Next


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von nighty

hi all :-)

gehe ueber den index der tabellen

gruss nighty

Sheets(Array(1, 3)).Select


Antwort 5 von Werner_abc

Hallo,

also ich habe das jetzt sowol über die Schleife als auch über das Array versucht. Ohne Erfolg.

Beim Array markiert mir zwar die angebenen Sheets aber es wird immer nur das Sheet mit den Zahlenwerten kopiert. Woran liegt das?

So sieht momentan der Code aus:


Sheets(Array(1, 4, 7)).Select
ActiveSheet.Copy


Wenn ich die Sheets mit Select auswähle sollte der nächste befehl sie doch alle kopieren, oder?

Antwort 6 von nighty

hi all :-))

hier hast du 3 worksheets ueber ein array selectiert

Sheets(Array(1, 4, 7)).Select

warum benutzt du es jetzt nicht ?

ActiveSheet.Copy

es wird mit ActiveSheet das zur zeit active kopiert und das array waere nun sinnlos

daher ersetze ActiveSheet durch Selection

gruss nighty