Hallo liebe Excelkönner,
schon wieder der Kuechenjunge:
Ich habe eine umfangreichte Arbeitsmappe mit ca. 1000 Rezepte. Auf dem ersten Blatt ist eine Übersicht über die einzelnen Rezepte, danach sind die eigendliche Rezepte. Die Übersicht ist mit den dahinterliegenden Blätter verknüpft. Ich möchte jetzt per Makro das erste Blatt im Gesamten markieren, dann kopieren, Inhalt einfügen-> WERT, dann alle, bis auf das erste Blatt markieren und die hinteren Blätter löschen.
Dies habe ich per Makrorecorder schon aufgezeichnet.
JETZT meine Frage: gibt es einen Makro-Code der alle, bis auf ein bestimmtes Blatt markiert. Bei der Aufzeichnung sieht der Code ja so aus, und ist ja bei 1000 Blatt sehr lang.
Sheets(Array(„25“, „26“, „29“, „30“, „31“, „32“, „34“, „38“, „39“, „40“, „43“, „44“, „45“, _
„46“, „47“, „49“, „50“, „50 (2)“, „51“, „52“, „53“, „54“, „55“, „56“, „57“)).Select _
Replace:=False
Für hilfe bin ich auch hier sehr dankbar.
Rezepte, danach sind die eigendliche Rezepte. Die Übersicht
ist mit den dahinterliegenden Blätter verknüpft. Ich möchte
jetzt per Makro das erste Blatt im Gesamten markieren, dann
kopieren, Inhalt einfügen-> WERT, dann alle, bis auf das erste
Blatt markieren und die hinteren Blätter löschen.
Hallo KJ,
Sub Klären()
Dim N As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Worksheets(1).UsedRange.Value = Worksheets(1).UsedRange.Value
For N = Worksheets.Count To 2 Step -1
Worksheets(N).Delete
Next N
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Gruß
Reinhard
Hallo Reinhard,
ich habe den Code in meine Arbeitsmappe kopiert, und ausgeführt.
Der Code starte und läuft sich „tod“, d.h. nach ca. 4 -5 MInuten habe ich Excel per Taskmanager gestoppt.Dies habe ich mehrfach gemacht.
Was könnte ich mal wieder falsch gemacht haben?
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
ich habe den Code in meine Arbeitsmappe kopiert, und
ausgeführt.
Der Code starte und läuft sich „tod“, d.h. nach ca. 4 -5
MInuten habe ich Excel per Taskmanager gestoppt.Dies habe ich
mehrfach gemacht.
Hallo KJ,
ich habe ihn jetzt zum zweiten mal getestet, bisauf Blatt 1 werden alle anderen geöscht.
Klar, ich habe nur mit drei Blättern getestet, wüßte jetzt aber gar nicht warum das bei 30.000 Blättern anders sein sollte außer der zeit.
Hasz du mehrere Arbeitsmappen offen? Gelöscht wird in der aktiven Arbeitsmappe.
Wurde denn kein einziges Blatt gelöscht?
Hat das jetzt letzte Blatt etwas besonderes? Blattschutz oder swas? *wildrumrat*
Gruß
Reinhard
Also, ich habe es auch probiert, und bei 3-10 Blätter geht es sehr gut (schnell) aber bei 300 Blatt braucht der Code schon Minuten, bei 1000 Blatt ??? Hat es ggf. etwas mit dem Arbeitsspeicher des Rechners zu tun. Ich habe 1 GB. Kannst du ggf. mir schreiben was da im Code abläuft, (Kommentare).Vielleicht hast du oder eine Mitleser eiene schnellere Lösung.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo KJ,
Also, ich habe es auch probiert, und bei 3-10 Blätter geht es
sehr gut (schnell) aber bei 300 Blatt braucht der Code schon
Minuten, bei 1000 Blatt ??? Hat es ggf. etwas mit dem
Arbeitsspeicher des Rechners zu tun. Ich habe 1 GB. Kannst du
ggf. mir schreiben was da im Code abläuft,
frag genauer was dir am Code unklar ist, dann kommentiere ich gerne.
Was hindert dich daran einfach den Code durchlaufen zu lassen und dabei gehst du für eine Stunde in ein Straßencafe und genießt die allmähliche Frühlingssonne?
Wenn Excel ein Blatt löscht so muß es innerhalb der geöffneten Mappe viele Bytes ändern/verschieben.
Das dauert halt.
In meinem Code kann man kaum noch was beschleunigen. Wenn dann einen neuen Grundansatz wie man vorgeht.
Also nicht von 1000 Blättern 999 löschen, sondern das eine Blatt in eine neue Mappe kopieren und die alte Mappe löschen, dann hat man das Gleiche.
Gruß
Reinhard
Hallo Reinhard,
toll Idee mit dem Denkansatz. Kaffeetrinken und so, na ja wenn man die Zeit dann hat.
Aber trotzdem die Idee ist gut.
Werde sie mal umsätzten.
Weil, sich die Arbeitsmappe immer wieder verändert, kann ich auch keine festen Werte nenne.
D A N K E
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo KJ,
Weil, sich die Arbeitsmappe immer wieder verändert, kann ich
auch keine festen Werte nenne.
ich weiß jetzt nicht was du mit festen Werten meinst.
So wie ich das verstanden habe hast du eine Mappe mit 1000 Blättern.
In Blatt1 stehen Formeln die sich Werte aus den anderen Blättern holen.
Jetzt willst du nur noch Blatt1 haben.
Dann markiere doch in Blatt1 alle benutzten Zellen, Strg+c, dann Bearbeiten–InhalteEinfügen–Werte
Nun unten mit Rechtsklick auf den Blattnamen gehen, Verschieben/kopieren wählen und in eine neue Mappe als Kopie verschieben .
In der Ausgangsmappe kannst du dann über Bearbeiten–Rückgängig das Umwandeln in Werte wieder aufheben.
Das sind sowenig Vorgänge, das geht auch ohne Makro.
Resultat, du hast zwei Mappen, eine mit 1000 Blättern, eine nur mit dem gewünschten Blatt
Gruß
Reinhard
Hallo Reinhard
danke für deine weitere Hilfe.
Ich werde es morgen mal komplett ausprobieren, mit dem Code zusammen.
schönes Wochenende
bis zum nächstenmal
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Grüezi Küchenjunge
danke für deine weitere Hilfe.
Ich werde es morgen mal komplett ausprobieren, mit dem Code
zusammen.
Reinhards Vorschlag in VBA umgesetzt lautet dann in etwa wie folgt:
Sub tr()
ActiveWorkbook.Sheets(1).Copy
With ActiveSheet.UsedRange
.Value = .Value
End With
End Sub
Mit freundlichen Grüssen
Thomas Ramel