Tabellen per Makro untereinander anhängen

  • Excel

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Testsieger.

    Tabellen per Makro untereinander anhängen

    Hi @ all...

    ich habe ein kleines Problemchen da ich nicht sonderlich gut mit VBA umgehen kann.
    Ich habe eine Datei die, mit der Zeit immer mehr Sheets bekommt (Vestgelegt, von einander unabhänging Namen).

    Jetzt will ich ein Makro schreiben das mir die Tabellen in ein neues Dokument exportiert. Soweit nicht schwer.

    Allerdings sollten diese Tabellen alle nur auf einem Sheet zusammengefasst werden und untereinander stehen.

    Also müsste dieses Makro die einzelnen Sheets durchwechseln und die Kopierten Tabellen in Bestimmten Abständen einfügen.
    Wenn ich eine neue Tabelle hinzufüge, soll mir also nicht die erste wieder überschrieben werden, sonder eben die bisherigen Tabellen vortsetzen.

    Ich hoffe ich habe mich verständlich ausgedrückt :)

    mfg

    Testsieger

    Vielen Dank schonmal im Vorraus.
    machs doch soweit fertig, wie du kommst.

    Also einen button, ein neues Workbook anlegen, vlt. auch schon ein SaveAs ausführen, damit das ding nicht irgendwohin speichert, und so.

    Das kannstedann hier im Forum als DateiAnhang anhängen, und dann kann man da die Kopier-Funktion dranbasteln.
    Eigentlich geht es mir nur um die "kopier-funktion"

    Also das die Daten untereinander aufgelistet werden.

    Wenn es da eine fertige Funktion dafür gibt wäre ich dankbar wenn Ihr mir sie nennen könntet.
    Weil jedesmal alles von Hand schreiben wäre ein wenig stressig.

    Thx

    Testsieger
    also es gibt kopierFunktionen für Zellbereiche - aber die Zellbereiche mussteja erstmal ermitteln und so zeugs.

    Ich kann dir aber keine KopierFunktion schreiben, wenn du nix lieferst, was und wohin es kopiert werden soll. Doch, kann ich schon, indem ich mir Test-Startbedingungen ausdenke und implementiere, aber ich find, mindestens das ist dein Job.
    Also ich habe dir jetzt mal 2 dateien erstellt.

    aus der bsp Dateien sollen die Werte in die zusammenfassung so eingetragen werden, dass die richtigen daten dran stehen.

    Ich hoffe du verstehst mich... ich weiss nicht genau wie ichs erklären soll ^^

    mfg Testsieger

    P.S.: muss jetzt leider gehn... werde aber morgen deine lösung anschaun...
    kannst dir also zeit lassen ^^

    Danke schonmal
    Dateien
    hmm - versteh ich nicht.

    Also soll nicht ein neues Workbook erzeugt werden, sondern das Zusammenfassung-Workbook soll geöffnet wern, und da eingetragen?

    Vor allem gibts in der Zusammenfassung ja für jede Tabelle nur ein feld, während in den Beispieldaten da mehrere Spalten gegeben sind.

    Kannst du mal händisch eine Zusammenfassung machen, dassich wirklich erkennen kann, welche Daten wo hinzukopieren sind?

    Visual Basic-Quellcode

    1. Set NewBook = Workbooks.Add
    2. Set cs = NewBook.Sheets(1)
    3. For Each ws in ThisWorkbook.Sheets
    4. ws.UsedRange.Copy cs.Range(cs.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 2, 1)
    5. Next
    6. NewBook.SaveAs "c:\Kopie.xlsx"
    Die Sache mit UsedRange funktioniert allerdings nur brauchbar, wenn du in deinen Originalsheets nicht massenweise leere Zeile am Schluss hast.
    In dem Fall, vorher die Zeilen herauslöschen mit "nach oben verschieben" und danach das Workbook speichern.

    Ansonsten die letzte Zeile ermitteln mit

    Visual Basic-Quellcode

    1. LastRow=ws.Cells(Cells.Row,1).End(xlUp).Row
    falls sichergestellt ist, dass Spalte 1 immer bis zum Schluss gefüllt ist.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Danke für eure antworten,

    ich habe nach landem Bateln einen code geschrieben der meine anforderungen erfüllt.

    Workbooks("Quelldatei").Sheets(Quellblatt).Activate
    Range("G16").Copy
    Workbooks("Zieldatei").Sheets("Zielblatt").Activate
    Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select
    z = ActiveCell.Row
    Cells(z, 2).Activate
    ActiveCell.Offset(0, 14).Activate
    ActiveCell = ("A9")
    Cells(z, 3).Activate
    ActiveCell.Offset(0, 14).Activate
    ActiveCell.PasteSpecial xlPasteValues

    Dieser Code ermöglicht es mir aus diversen Arbeitsblättern die Daten auszulesen und nach Überschrift der "QuellArbeitsblätter" in eine neue Datei einzufügen und zu Ordnen.
    Die Dateien werden an die unterste Datei angehängt. (der code ist natürlich mehrfach aufgefürht und dementsprechend verändert)

    mfg

    Testsieger
    jo, der Makro-Rekorder... :)

    paar ungetestete Verbesserungsvorschläge:

    dim rngFound As Range, wksZiel as Worksheet
    Workbooks("Quelldatei").Sheets(Quellblatt).Range("G16").Copy
    Set wksZiel =Workbooks("Zieldatei").Sheets("Zielblatt")
    Set rngFound =wksZiel.Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious)
    z = rngFound.Row
    wksZiel.Cells(z, 2).Offset(0, 14).PasteSpecial xlPasteValues


    Man kann die Ranges in Variablen speichern, und braucht dann nicht ständig verschiedenen Worksheets und Cellen zu aktivieren - das klappert ja wie verrückt.

    Testsieger schrieb:

    ich habe nach landem Bateln einen code geschrieben
    Ja, das sieht man.
    Reines Gebastel.
    Hat mit Programmieren nichts zu tun.

    Da war mein Vorschlag wohl Perlen vor die Säue.
    Wahrscheinlich hast du nicht mal versucht, ihn zu verstehen.

    Ich bin denn mal weg...
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @ErfinderDesRades

    oO naja mit dem Rocorder hab ichs nicht gemacht... aber gut zu wissen das es so auch geht ^^

    ich werde deinen Vorschlag noch versuchen einzubaun.

    @petaod

    tatsächlich habe ich versucht eine "perlen" nachzuvollziehn, bin leider zu keinem ergebniss gekommen.
    Wie gesagt ich habe leider nahezu KEINERLEI verständniss für diese Sprache.

    Trotzdem Danke euch 2.

    mfg

    Testsieger