Daten von Tabellenblatt nach anderem Tabellenblatt kopieren

  • Excel

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von the_thought.

    Daten von Tabellenblatt nach anderem Tabellenblatt kopieren

    Hallo zusammen,

    Ich habe zwei schon bestehende Excel-Dateien. Nun würde ich gerne eine bestimmte Range aus einem bestimmten Tabellenblatt in die andere Excel-Tabelle in ein gleichnamiges Tabellenblatt hinzufügen. Ich habe insgesamt 35 Tabellenblätter mit dem gleichen Aufbau. Und aus jedem Tabellenblatt soll die gleiche Range in die andere Tabelle kopiert werden.

    Wenn ich eine Zeit später nochmal eine Excel-Datei mit dem gleichen Aufbau wie die erste Datei bekomme, will ich diese Daten in die andere Excel-Datei (die gleiche wie beim ersten Vorgang) kopieren, aber unter die Daten, die ich im vorherigen Kopiervorgang kopiert habe. Sprich, wenn ich beim ersten Mal die kopierten Zeilen in Zeile 1 und 2 kopiere, sollen die nächsten dann in Zeile 3 und 4 kopiert werden.

    Ich habe jetzt schon einiges ausprobiert, aber bekomme nie genau das hin was ich brauche.

    Es wäre super, wenn mir jemand helfen könnte.

    Vielen Dank schon im Voraus :)
    Hallo petaod,

    ich habe folgendes im Internet gefunden und für mich angepasst. Das funktioniert noch nicht. Da ich mich in vb nicht sehr gut auskenne, weiß ich nicht wo der Fehler liegt.

    Sub kopieren()
    Workbooks.Open Filename:="C:\Neu.xlsx"
    Windows("Original.xlsx").Sheets("21706").Range("A2:J3").Copy
    Windows("Neu.xlsx").Sheets("Tabelle1").Range("A2:J3").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    End Sub

    Jetzt gerade zuletzt kam der Fehler: Index außerhalb des gültigen Bereichs. Welcher Index könnte gemeint sein? Die Werte stehen eigentlich sicher in A2 bis J3.

    Das soll, denke ich, eigentlich die Range A2 bis J3 in meine Neu.xlsx kopieren.

    Vielen Dank schon im Voraus :)
    Mit Excel-Windows zu arbeiten ist gefährlich, wenn man nicht genau weiß, was gerade aktiviert ist.

    Dein Code lässt sich etwas vereinfachen:

    Visual Basic-Quellcode

    1. Set wb=Workbooks.Open("C:\Neu.xlsx")
    2. Sheets("21706").Range("A2:J3").Value = wb.Sheets("Tabelle1").Range("A2:J3").Value
    3. wb.Close False
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hi,

    entweder gibt es die Datei "Neu.xlsx" nicht auf dem Pfad "C:\"
    Oder es gibt das Blatt "21706" oder das Blatt "Tabelle1" nicht.

    Diese Fehlermeldung lässt immer darauf schließen, dass etwas (Blatt, Mappe) nicht erreichbar ist.

    Gruß
    Thomas

    [edit]
    Sehe gerade,du öffnest im Code eine Mappe. Diese wird dadurch aktiviert, damit verliert das Makro den Index.Versuche es so:

    Quellcode

    1. Sub Test()
    2. Set wbQ = ActiveWorkbook
    3. Set wb = Workbooks.Open("C:\Neu.xlsx")
    4. wbQ.Sheets("21706").Range("A2:J3").Value = wb.Sheets("Tabelle1").Range("A2:J3").Value
    5. wb.Close False
    6. End Sub

    Gruß
    Thomas

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TommyDerWalker“ ()

    Ich hoffe mal, dass er den Code entweder in einem Modul oder in einem Arbeitsblatt hat.
    In Personal.xlsb hat etwas so Spezielles nichts verloren.

    Ich arbeite deswegen ungern mit ActiveWorkbook, weil das zur Laufzeit durch irgendeinen User-Mausklick auf ein anderes Fenster modifiziert werden kann.
    Dann läuft der Code in den Wald.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ich für meinen Teil speichere alle meine Makro's in der Persönlichen Arbeitsmappe, aber das ist Ansichtssache.
    ​Ich arbeite deswegen ungern mit ActiveWorkbook, weil das zur Laufzeit durch irgendeinen User-Mausklick auf ein anderes Fenster modifiziert werden kann.

    Da gebe ich dir natürlich recht.
    Optimal wäre es auch, falls die Quellmappe immer die selbe ist, auch diese mit Namen und Pfad anzugeben.
    Zumindest bei Makro's die Mappen-übergreifend angewendet werden.
    Vielen Dank für eure Hilfe :) Aber wenn ich den Code (mit ActiveWorkbook und ThisWorkbook) benutze, kommt zwar keine Fehlermeldung mehr, aber dafür verschwinden die Werte in meiner Originaldatei im Sheet 21706 und in Neu.xlsx taucht nichts auf.

    Also ich kenne mich leider echt nicht so gut aus ... Ich arbeite in dem Visual Basic Editor direkt in Excel. Dort habe ich den Code jetzt einmal in die Arbeitsmappe und einmal in die Tabelle kopiert.
    Benutz du noch anderen Code ?
    Wie rufst du das Makro auf ?
    Nimm mal diesen Code und sag uns was die MsgBox dir ausgibt:

    Quellcode

    1. ​Sub Test()
    2. Set wbQ = ActiveWorkbook
    3. Set wb = Workbooks.Open("C:\Neu.xlsx")
    4. MsgBox wbQ.Name
    5. MsgBox wb.Name
    6. wbQ.Sheets("21706").Range("A2:J3").Value = wb.Sheets("Tabelle1").Range("A2:J3").Value
    7. wb.Close False
    8. End Sub


    Gruß
    Thomas

    the_thought schrieb:

    verschwinden die Werte in meiner Originaldatei im Sheet 21706 und in Neu.xlsx taucht nichts auf

    Works as designed ;)
    wbQ.Sheets("21706").Range("A2:J3").Value = wb.Sheets("Tabelle1").Range("A2:J3").Value
    Nimmt vom neuen Sheet und überschreibt in 21706
    Wenn du's anders rum willst, musst du die Formel halt rumdrehen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hey,

    probiere mal so:

    Quellcode

    1. ​Sub Test()
    2. Set wbQ = ActiveWorkbook
    3. Set wb = Workbooks.Open("C:\Neu.xlsx")
    4. wbQ.Sheets("21706").Range("A2:J3").Copy wb.Sheets("Tabelle1").Range("A2")
    5. Application.DisplayAlerts = False
    6. wb.Close True
    7. Application.DisplayAlerts = True
    8. End Sub


    Liegt die Neu.xlsx wirklich einfach auf C:\ ?
    Manchmal kannst du da Probleme bekommen, hinsichtlich Adminrechte und das die Mappe Schreibgeschützt wird.

    Gruß
    Thomas