archivieren von tabellenblättern

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: archivieren von tabellenblättern
von: bianca
Geschrieben am: 13.05.2015 14:02:58

hallo,
ich habe ein Excel Problem, für das ich leider keine Lösung weiß.
Folgende Grunddarstellung:
Eine Arbeitsmappe mit
Sheet 1 - Übersicht
Sheet 2-20 mit Detailblättern. Die Detailblätter heißen 1000, 2000, 3000 etc.
In der Übersicht sind diese Nummern in Spalte C gelistet.
Ich hätte gerne einen VBA Code der von mir gekennzeichnete Nummern in der Übersicht(z.B. "x" in Spalte "Archivieren"):
1: die Zeile entsprechender Nummer (z.B. 2000) kopiert und in eine neue Mappe spielt, dann aus Ursprungsmappe löscht (ohne das eine Leerzeile bleibt)
2: entsprechendes Sheet (z.B. 2000) kopiert und aus Ursprungsdatei löscht
gibt's dafür eine Lösung?
Besten Dank im Voraus
Gruß Bianca

Bild

Betrifft: AW: archivieren von tabellenblättern
von: Michael
Geschrieben am: 13.05.2015 14:21:58
Hallo Bianca,
ich würde erst 2. und dann 1. machen, wenn 2. erfolgreich war.
Zu 2. kannst Du mit VBA gut selbst recherchieren, z.B. Excel vba blatt in neue Datei verschieben
Zu 1. recherchiere: excel vba zeile löschen
und Du triffst u.a. https://www.herber.de/forum/archiv/408to412/409217_in_VBA_Zeilen_loeschen.html
Reicht Dir das?
Schöne Grüße,
Michael

Bild

Betrifft: AW: archivieren von tabellenblättern
von: bianca
Geschrieben am: 13.05.2015 14:38:45
es hilft mir etwas weiter, reicht mir aber nicht vollständig.
Zuerst Punkt 2 und dann 1 zu tun, ist absolut die bessere Lösung - danke!
und mit zu Punkt 1 komme ich schon irgendwie zurecht.
Das Grundproblem ist eigentlich, dass ich nicht weiß, wie ich im Code das Sheet ansprechen soll...
beim Aufzeichnen sieht es ja so aus

Sub Makro1()
    Sheets("2000").Select
    Sheets("2000").Move Before:=Workbooks("Archiv.xlsm").Sheets(1)
    Windows("Bau.xlsm").Activate
End Sub
aber wie schaffe ich es, dass er diese Auswahl (Sheet xxxx) aus der Übersicht in den Code bekommt.
also wenn zeile 1 irgendwie gekennzeichnet ist, lösche sheet mit Namen aus zeile 1 Spalte B...
Gruß Bianca

Bild

Betrifft: AW: archivieren von tabellenblättern
von: Michael
Geschrieben am: 13.05.2015 15:36:07
Hi Bianca,
also gut, Du hast ja in Deiner Übersicht die Namen in einer Spalte stehen, meinetwegen A5:A20.
So einen Bereich kann man gut mit einer for/each-Schleife durchlaufen. Nur: wenn Du zwischendrin Zeilen löschst, könnte die zicken. Ich würde in einer Spalte "rechts" ein Kennzeichen setzen, wenn der Export erfolgreich war, z.B. ein "x" oder "ok", um dann, wenn die Kopierei (bzw. Verschieberei) erledigt ist, alles Löschen, wo ein "ok" steht.
Du kannst den Bereich händisch auf eine Größe setzen, die "immer groß genug ist" oder die Untergrenze per VBA ermitteln (in dem Fall A5:A20 wäre das so: Variable von=5 händisch zuweisen, Variable
bis = Range("a5").End(xlDown).Row
In Deiner Schleife durchläufst Du dann alle Zellen in etwa so:

Sub machen()
Dim von As Long, bis As Long
Dim z As Range
Dim blatt As String
von = 5
bis = Range("a5").End(xlDown).Row
For Each z In Range("A" & von & ":A" & bis)
  blatt = z.Value
  Range("B" & z.Row) = "x"
  MsgBox "Blatt " & blatt & "so verwenden: Sheets(blatt)"
Next
End Sub
Du kannst nämlich einen konkreten Werten bei Sheets einsetzen (z.B. "2000") oder eine (String-)Variable.
Schöne Grüße,
Michael

Bild

Betrifft: AW: archivieren von tabellenblättern
von: bianca
Geschrieben am: 13.05.2015 15:44:47
ok, ich danke dir...werde das morgen gleich mal testen
Gruß Bianca

 Bild

Beiträge aus den Excel-Beispielen zum Thema "archivieren von tabellenblättern"