[VBA Exclel] In andere Datei kopieren - Frustration

Gwito

Lt. Commander
Registriert
Okt. 2006
Beiträge
1.418
Hallo,

habe noch nicht so viel mit VBA gemacht und auch deutlich komplizierteres, aber beim kopieren von ein paar Zeilen in eine andere Excel Datei komme ich nicht hin.

Hintergrund: In einer Datei wo in einer Pivot-Tabelle Daten aktualisiert werden, sollen diese in ein andere Excel Datei kopiert werden, wo sie aufbereitet werden. In der Zieldatei müsste man pro Woche eine neue Zeile anlegen (KW 1, 2, 3 etc), aber soweit war ich noch nicht.

Habe einige Sachen von Google schon probiert, eigentlich kam immer ein Indexfehler, mal mit Nummer 9, mal ohne. Aktuell kommt aber der Laufzeitfehler 13 mit Typen unverträglich, kann natürlich alles bedeuten.
Der Code ist jetzt ziemlich simpel (waren auch mal 30 Zeilen, hab alles probiert auch wenn ich die Hälfte des Code nicht ganz nachvollziehen konnte ;)):

Code:
Sub Datei_Kopieren()

    Set Start = Workbooks.Open("C:\Users\PCNAME\Desktop\Testdatei.xlsx")
    Set ziel = Workbooks.Open("C:\Users\PCNAME\Desktop\Testdatei2.xlsx")
    Start.Worksheets(Tabelle1).Range("A1:A10").Copy
    Destination = ziel.Worksheets(Tabelle1).Range("A1:A10")

End Sub

Beide Dateien liegen nicht direkt auf den Rechner, zum Testen habe ich aber zwei fast leere Dateien erstellt um Fehler auszuschließen.

Wo liegt denn der Fehler?

Achja, die Startdatei soll eigentlich nicht geöffnet werden, da von dieser aus das Makro läuft und natürlich offen ist, habe es nur abgeändert wegen mögl. Fehler.
 
Zuletzt bearbeitet:
Erste Hilfe dazu: F8... dann schaust du, wo genau der Fehler auftritt...
Dann: Irgendwie würde ich das alles anders aufziehen... du machst schon mal keinen Dim, daher weiß ich nicht mit welchen Werten und Typen die einzelnen Variablen verarbeitet werden... ich bin mir nicht einmal sicher, ob man das überhaupt so machen kann... zum guten Ton gehört es nicht :)
 
Fehler tritt in Zeile 5. (also beim kopieren) auf.
An der Uni haben wir das alles ohne gemacht, mit dem Hinweis im Unternehmen sollte man es dazu schreiben, bringt aber meistens nur etwas Übersicht.
Der Code ist auch von Google, wie gesagt da es nicht klappen wollte, habe ich so einiges probiert.
 
Hallo,

Schon mal ohne das .open versucht? Wenn der Code in Zeile 5 abbricht, guck mal bitte was in den Variablen Start und ziel gespeichert ist (einfach mit dem Mauscursor darueber gehen. Dann zeigt dir der Editor den aktuellen Wert an.
 
Mal kurz gebremst... du hast in der Klammer nach Worksheets nr den Platzhalter zur Anonymisierung drin, korrekt? Also wenn du den Namen verwendest, hast du schon an die Anführungszeichen gedacht, richtig? :)
 
In der Zeile 5 muss Tabelle1 in Anführungszeichen stehen.

so:

Start.Worksheets("Tabelle1").Range("A1:A10").Copy
 
Ups die habe ich wohl unterschlagen.
Habe Sie ergänzt aber nun bekomme ich in der Gleichen Zeile den Fehler 424 Objekt erforderlich :rolleyes:

Achja und in den variablen war soweit nichts gespeichert, hab die Pfade jetzt fest zugewiesen, aber viel weiter komme ich leider auch nicht.
 
Code:
Start.Worksheets(Tabelle1).Range("A1:A10").Copy
Destination = ziel.Worksheets(Tabelle1).Range("A1:A10")

... kopiert den Inhalt der Quelle zwar in die Zwischenablage, fügt aber nichts ins Ziel ein. Du definierst nur eine Variable "Destionation".

Würde die zwei Zeilen daher gegen diese ersetzen:

Code:
ziel.Worksheets("Tabelle1").Range("A1:A10").Value = start.Worksheets("Tabelle1").Range("A1:A10").Value


Aja, und ich würde alle verwendeten Variablen mit "DIM" vordefinieren, vermeidet Fehler, hilft beim debuggen und ist einfach übersichtlicher und sauberer
 
Habe nun die Variablen deklariert und auch die Copy Funktion so angepasst (kopiert), leider bekomme ich leider weiterhin die 424 Fehler.

Soll heissen er hat nichts zum einfügen oder woher kann der kommen?
 
ich würde anstelle Worksheets nur sheets probieren.

also so:

Start.sheets("Tabelle1").Range("A1:A10").Copy
 
Habe ich auch probiert, auch die Variablen mal mit vollständigen Pfaden ersetzt. Dann erhate ich allerdings wieder den Laufzeitfehler 9.

Frustriert etwas, hab das ja auch schon mal gemacht, aber am Arbeitsrechner kann es ja auch kaum liegen.
 
so gehts:

Sub Datei_Kopieren()
Dim wbStart, wbZiel As Workbook

Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\test\Testdatei2.xls")
wbStart.Sheets("Tabelle1").Range("A1:A10").Copy
wbZiel.Sheets("Tabelle1").Range("A1:A10").Select
wbZiel.Sheets("Tabelle1").Paste
End Sub

p.s. ggf anpassen
Ergänzung ()

hardkid schrieb:
so gehts:

Sub Datei_Kopieren()
Dim wbStart, wbZiel As Workbook

Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\test\Testdatei2.xls")
wbStart.Sheets("Tabelle1").Range("A1:A10").Copy
wbZiel.Sheets("Tabelle1").Range("A1:A10").Select
wbZiel.Sheets("Tabelle1").Paste
End Sub

p.s. ggf anpassen

oder besser:

Sub Datei_Kopieren()
Dim wbStart, wbZiel As Workbook

Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\test\Testdatei2.xls")
wbStart.Sheets("Tabelle1").Range("A1:A10").Copy Destination:=wbZiel.Sheets("Tabelle1").Range("A1:A10")
End Sub
 
Klappt wirklich... Danke :D
Wobei sporadisch manchmal doch noch ein Fehler kommt, wenn man es wiederholt klappt dann aber doch.

Lag dann nur an der fehlenden select Anweisung?
 
die zweite Variante ohne Select ist sauberer :).
Es kommt zu einer Fehlermeldung, wenn die Zieldatei(wbZiel) schon geöffnet ist.
Den Fehler müsstest du mit der If Anweisung abfangen...
 
Ja die If Anweisung sollte ich dann noch einbauen, falls es mal jemand anderes nutzt.

Jetzt muss er nur noch ohne Format kopieren.
 
Hat alles jetzt super geklappt, danke noch mal.
 
Zuletzt bearbeitet:
Zurück
Oben