[VBA Exclel] In andere Datei kopieren - Frustration

Gwito

Lt. Commander
Dabei seit
Okt. 2006
Beiträge
1.375
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:

Rome1981

Captain
Dabei seit
Apr. 2007
Beiträge
3.513
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 :)
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
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.
 

kwlee

Cadet 3rd Year
Dabei seit
Apr. 2011
Beiträge
51
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.
 

Rome1981

Captain
Dabei seit
Apr. 2007
Beiträge
3.513
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? :)
 

hardkid

Cadet 1st Year
Dabei seit
Juni 2005
Beiträge
10
In der Zeile 5 muss Tabelle1 in Anführungszeichen stehen.

so:

Start.Worksheets("Tabelle1").Range("A1:A10").Copy
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
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.
 

cc_aero

Lt. Junior Grade
Dabei seit
Juli 2013
Beiträge
339
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
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
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?
 

hardkid

Cadet 1st Year
Dabei seit
Juni 2005
Beiträge
10
ich würde anstelle Worksheets nur sheets probieren.

also so:

Start.sheets("Tabelle1").Range("A1:A10").Copy
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
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.
 

hardkid

Cadet 1st Year
Dabei seit
Juni 2005
Beiträge
10
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 ()

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
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
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?
 

hardkid

Cadet 1st Year
Dabei seit
Juni 2005
Beiträge
10
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...
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
Ja die If Anweisung sollte ich dann noch einbauen, falls es mal jemand anderes nutzt.

Jetzt muss er nur noch ohne Format kopieren.
 

Gwito

Lt. Commander
Ersteller dieses Themas
Dabei seit
Okt. 2006
Beiträge
1.375
Hat alles jetzt super geklappt, danke noch mal.
 
Zuletzt bearbeitet:
Top