Spalte aus 1000 Dokumenten in eins kopieren

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Spalte aus 1000 Dokumenten in eins kopieren

    Nachdem man mir hier heute schon so freundlich geholfen hat versuch ichs glatt noch mal.

    Hey,

    nun ist mein Problem, dass ich ca. 1000 gleich aufgebaute Excel-Dateien habe und nun jeweils die erste Spalte daraus in ein Sammeldokument kopieren möchte.
    Haken an der Sache: Das Kopierte sollte jeweils 5 Spalten hinter dem zuletzt Eingefügten erscheinen - und das klappt nicht so ganz

    Derzeitiges Skript:


    Sub Aufmachen()
    DieseDatei = ActiveWorkbook.Name
    Set AlleDateien = Application.FileDialog(msoFileDialogOpen)
    With AlleDateien
    .AllowMultiSelect = True
    If .Show = -1 Then
    For Each Datei In .SelectedItems
    y = 2
    Set Dnam = Workbooks.Open(Datei)
    Range("A2:A30").Copy
    Windows(DieseDatei).Activate
    Cells(6, y).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Dnam.Close False
    y = y + 5
    Next
    End If
    End With
    End Sub

    Somit kann ich gezielt die Dateien auswählen, aus denen die Spalten kopiert werden sollen. Allerdings werden die Spalten nun alle in B6 eingefügt ohne jeweils 5 Spalten weiter zu rücken.

    Vielen Dank für die Hilfe :)
    Nimm das y=2 aus der Schleife raus (davor).


    Aber die Windows-Switcherei und deine Art der Adressierung gefällt mir nicht (da unsauber).

    Visual Basic-Quellcode

    1. Sub Aufmachen()
    2. Set Dest = ThisWorkbook.Sheets("Ziel")
    3. Set AlleDateien = Application.FileDialog(msoFileDialogOpen)
    4. With AlleDateien
    5. .AllowMultiSelect = True
    6. If .Show = -1 Then
    7. y = 2
    8. For Each Datei In .SelectedItems
    9. Set Dnam = Workbooks.Open(Datei)
    10. Dnam.Sheets(1).Range("A2:A30").Copy Dest.Cells(6, y)
    11. Dnam.Close False
    12. y = y + 5
    13. Next
    14. End If
    15. End With
    16. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Erstmal vielen Dank!
    Es ist schön das es noch Foren gibt, in denen man mit tollen Antworten empfangen wird. Gerade als blutiger Anfänger motiviert mich derartiges enorm.

    Nun war ich froh, dass gestern letztlich alles lief. Dummerweise hat er heute nichts davon gespeichert - na gut, der Fehler sitzt immer vor dem Rechner.
    Jetzt hab ichs mit deinem Code versucht. Leider kommt dort folgende Fehlermeldung:
    "Index außerhalb des gültigen Bereichs"

    Was nun?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sascher“ ()

    Index außerhalb des gültigen Bereichs
    In welcher Zeile?

    Gleich in der ersten Zeile?
    Da habe ich einfach angenommen, dass dein Tabellenblatt "Ziel" heißt.
    Du musst das schon noch auf deine Umgebung anpassen.

    Falls der Code im Context des Worksheet läuft, kannst du die Zeile streichen und in Zeile 10 das "Dest." weglassen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --