Bitte um Hilfe bei vorhanden Code fürs zusammenfügen von Excel-Dateien

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von arin fu.

    Bitte um Hilfe bei vorhanden Code fürs zusammenfügen von Excel-Dateien

    Hallo,

    ich habe im Internet einen Code gefunden der mein Anliegen eigentlich schon fast löst.
    Ich will mehrere einzelne Excel-Dateien die jeweils nur aus einem Blatt bestehen zu einer Excel-Datei zusammenfügen.
    In der großen Datei soll dann jede einzelne Datei auch als einzelnes Blatt aufgeführt sein.

    Mein einziges Problem besteht nun darin, dass ich die Reihenfolge der einzelnen Blätter genau anders herum möchte.

    Bsp. Ich habe 3 Excel-Dateien. Excel1, Excel2 und Excel3. Wenn ich das Makro anwende habe ich in meiner Ergebnisdatei bei den Tabellenblättern allerdings die Reihenfolge "Excel 3, Excel 2, Excel 1"

    Wahrscheinlich bedarf es nur einer kleinen Anpassung, ich habe jedoch wirklich absolut Null Ahnung von der Materie.

    Wäre echt super nett wenn mir jemand hier weiterhelfen könnte.

    Danke scho vorab

    Gruß
    arin


    Folgend der Code:

    Sub GetSheets()
    Path = "C:\Users\XXXX\"
    Filename = Dir(Path & "*.xlsx")
    Do While Filename <> ""
    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
    For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Copy After:=ThisWorkbook.Sheets(1)
    Next Sheet
    Workbooks(Filename).Close
    Filename = Dir()
    Loop
    End Sub



    *sehe gerade, ich bekomme es nicht mal hin, den Code richtig formatiert einzufügen.. Sorry dafür!
    Um Code als solchen zu kennzeichnen: Code markieren und folgenden Button anklicken:


    Zum Problem selbst. Es ist ungünstig, mit Copy&Paste Probleme zu behandeln, wenn man keine Ahnung von Programmieren hat. Am Ende führt man was aus, was einem alle Dateien verschlüsselt und zu Zahlungen auffordert. Aber das ist ein anderes Thema.
    Erstmal Dein Code in "schön":

    Visual Basic-Quellcode

    1. Sub GetSheets()
    2. Path = "C:\Users\XXXX\"
    3. Filename = Dir(Path & "*.xlsx")
    4. Do While Filename <> ""
    5. Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
    6. For Each Sheet In ActiveWorkbook.Sheets
    7. Sheet.Copy After:=ThisWorkbook.Sheets(1)
    8. Next Sheet
    9. Workbooks(Filename).Close
    10. Filename = Dir()
    11. Loop
    12. End Sub

    Das Problem bzgl. der Reihenfolge liegt in Zeile#7. "Füge das Blatt der aktuell offenen Datei nach Blatt1 ein".
    Wenn Du folgende Dateien aufrufst: 1.xlsx, 2.xlsx, 3.xlsx, dann wird 1 nach Blatt1 eingefügt. Du hast dann Blatt1, BlattAusDatei1. Dann ist Datei2 dran, was nach Blatt1 eingefügt wird. Danach hast Du also Blatt1, BlattAusDatei2, BlattAusDatei1. Und zum Schluss wird BlattAusDatei3 ebenfalls wieder nach Blatt1 ausgeführt => Blatt1, BlattAusDatei3, BlattAusDatei2, BlattAusDatei1.

    Schreib stattdessen:

    Visual Basic-Quellcode

    1. Sheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)


    ##########

    Die Datei, die das Makro ausführt, darf nicht im selben Verzeichnis liegen, sonst wird's ... viele Duplikate geben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Hey und vielen Dank für deine schnelle Hilfe!!

    Und danke für deinen Hinweis, dass man so auf Betrüger hereinfallen könnte. Soweit hatte ich tatsächlich nicht gedacht.

    Ich hab meine 7. Zeile jetzt durch deine Zeile ersetzt und es sieht jetzt so aus:

    Visual Basic-Quellcode

    1. Sub GetSheets()
    2. Path = "C:\Users\XXXX\"
    3. Filename = Dir(Path & "*.xlsx")
    4. Do While Filename <> ""
    5. Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
    6. For Each Sheet In ActiveWorkbook.Sheets
    7. 1.Sheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    8. Next Sheet
    9. Workbooks(Filename).Close
    10. Filename = Dir()
    11. Loop
    12. End Sub



    Allerdings bekomme ich jetzt die Fehlermeldung:
    Fehler beim Kompilieren: Syntaxfehler
    Im Anschluss ist die Zeile 7 in roter Schrift dargestellt.

    Grüße
    Arin



    Edit:
    Oh, die 1. war wohl zu viel.
    Hat jetzt geklappt. Ich danke dir!!! Hat mir wirklich sehr geholfen!

    Schönes Wochenende wünsche ich

    Grüße
    Arin