Excel Tabellen in eine Tabelle zusammenkopieren

Bild

Betrifft: Excel Tabellen in eine Tabelle zusammenkopieren
von: Klaus Sebaldt
Geschrieben am: 27.04.2015 11:05:33

Ideen gesucht für folgende Fragestellung:
Ich habe 10 Excel-Tabellen, in denen sich unterschiedlich formatierte Werte befinden.
Die zehn Tabellen werden regelmäßig geändert, Werte und Formatierungen aktualisiert.
Ich möchte jetzt einmal pro Woche die Inhalte aus allen 10 Tabellen in ein großes Tabellenblatt zusammenkopieren und als neue Datei abspeichern. Diesen Vorgang möchte ich natürlich gerne automatisieren. Wie kann ich das am besten machen?
Voraussetzungen:
- die Formatierungen müssen mit übernommen werden (SVerweis geht also nicht)
- die Automatisierung sollte möglichst in einer vordefinierten "oberen linken Ecke" anfangen zu markieren und dann bis zum jeweils aktuellen Ende einer Quelle "unten rechts" gehen, um diesen Bereich komplett zu markieren und in die neue Tabelle zu kopieren
- in der neuen Tabelle sollen die kopierten Inhalte einfach untereinander weg eingefügt warden

Bild

Betrifft: AW: Excel Tabellen in eine Tabelle zusammenkopieren
von: Jannik
Geschrieben am: 27.04.2015 13:35:51
Hallo,
Tabellen so zu kopieren, wie du das möchtest (untereinander weg) ist an sich kein Problem. Ich habe mal eine vereinfachte Version eines Codes eingefügt, den ich selber anwende... Du müsstest dann noch das Zielblatt anpassen

Sub Eintraege_kopieren()
Set wksZiel = Worksheets("xyz")
'erstmal alle alten Einträge löschen
wksZiel.Range(Cells(2, 1), Cells(Rows.Count, Columns.Count)).Clear
Application.StatusBar = "Kopieren der Tabellenblätter" 'Anzeige in der Statusleiste
For a = 1 To 3 'HIER DIE AUSWAHL DER INPUTBLÄTTER FESTLEGEN (a ist die Blattnummer von links in  _
der Ansichtsleiste)
    With ThisWorkbook.Worksheets(a) 'Das gewünschte Blatt auswählen
        Set wksQuelle = Worksheets(a)
        
        If wksQuelle.AutoFilterMode Then wksQuelle.AutoFilterMode = False 'Eventuelle  _
Autofilter abschalten, da sonst nur der gefilterte Teil kopiert würde
        
        'Erste Freie Zeile in Zusammenfassung finden und als Variable i festhalten
        'Für diesen Fall muss eine neue Variable (neben letztezeile) geschaffen werden, da  _
unten sowohl
        'die letztezeile des Blattes a als auch die erste freie Zelle im Zielblatt angesprochen  _
werden
        With wksZiel
        i = 0
            Do
                i = i + 1
                s = Cells(i, "A")
                If Len(s) = 0 Then  'Len fragt den Wert der Zelle s ab (der Null ist, wenn  _
diese leer ist)
                    Exit Do
                End If
            Loop While i < 65535
        End With
        
               
        'die letzten beschriebenen Zellen in Blatt a finden und in Variablen festhalten ( _
Spalte1, Zeile1 als Präferenzen)
        letztezeile = .Cells(Rows.Count, 1).End(xlUp).Row
        letztespalte = .Cells(1, Columns.Count).End(xlToLeft).Column
 
        wksQuelle.Range(wksQuelle.Cells(2, 1), wksQuelle.Cells(letztezeile, letztespalte)).Copy  _
Destination:=wksZiel.Cells(i, "A")
        
        'Autofilter wieder anschalten: leider der Nachteil; vorherige Filtereinstellungen sind  _
nicht mehr vorhanden...
        'wksQuelle.Cells(2, 1).AutoFilter
    End With
Next a
End Sub
Vielleicht hilft dir das schon weiter, weil das mit den Formatierungen habe ich nicht so ganz verstanden: Das Gesamt-Tabellenblatt kann wie jedes andere Blatt auch nur EINE Formatierung haben (im Sinne von Spaltenbreite usw.). Das ist in meinem Beispiel so dass ich diese Sachen vorher einmal festgelegt habe und nur die Inhalte ändere. Für weitere Erklärungen wäre es schön, wenn du mal ein kleines Beispiel basteltst, woran man dein Problem erkennen kann...
Gruß Jannik

Bild

Betrifft: AW: Excel Tabellen in eine Tabelle zusammenkopieren
von: Klaus Sebaldt
Geschrieben am: 27.04.2015 16:27:41
Supi - Dankeschön - das probier ich mal aus :-)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel Tabellen in eine Tabelle zusammenkopieren"