Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei öffnen, Range kopieren, schließen

Datei öffnen, Range kopieren, schließen
02.02.2017 15:32:15
Hauke
Hallo zusammen,
hat vllt jemand eine Idee zu folgendem Problem:
Ich habe einen Ordner mit Excel Tabellen. Alle enthalten Daten in den Spalten A bis D, allerdings je nach Datei unterschiedlich viele. Nun habe ich eine Daten für die Zusammenfassung, die jede Datei in dem Ordner öffnen, die vorhandenen Daten auslesen, und in der Zusammenfassung untereinander weg speichern soll.
Ein Beispiel: https://www.herber.de/bbs/user/111100.xlsm
Die Datei läuft bereits, braucht aber eben sehr sehr lange zum Auslesen.
Es werden vorauss. 500 Dateien mit ca. 80 gefüllten Zeilen in jedem Ordner liegen.
Habe es schon mit UsedRange.Copy versucht, um die Anzahl der angesprochenen Zeilen zu verringern, aber da meckert Excel immer.
Vielen Dank schonmal, falls jemand einen Tip hat.
Hauke-Christian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 15:51:26
Max2
Hi, warum nicht so:

lngLetzteSpalte = .Range(.Cells(1, .Columns.count), .Cells(1, 1)).Find(What:="*", _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:= _
xlPrevious).Column
lngLetzteZeile = .Range(.Cells(.rows.count, 1), .Cells(1, 1)).Find(What:="*", _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious). _
row
oSourceBook.Sheets(1).Range(.Cells(1, 1), .Cells(lngLetzteZeile, lngLetzteSpalte)).Copy
Oder auch so:

lngLetzteZeile = .Cells(.rows.count).End(xlUp).Row
lngLetzteSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
oSourceBook.Sheets(1).Range(.Cells(1, 1), .Cells(lngLetzteZeile, lngLetzteSpalte)).Copy

einfach die letzte beschriebene zeile und spalte ermitteln und dann alles bis dahin kopieren
Anzeige
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:01:06
Hauke
Hallo Max,
habe grad mal versucht die Idee umzusetzen. Allerdings bekomme ich immer die Fehlermeldung, dass die .Rows nicht ausreichend deklariert sind?!
Muss gleich mal eine Pause machen. Grübel schon zu lange über diesem Problem. HAHA
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:05:44
Max2
bei der zweiten Möglichkeit habe ich bei den rows die spalten angebe vergessen.
Mein Fehler tut mir leid!
muss heißen: lngLetzteZeile = .Cells(.rows.count,1).End(xlUp).Row
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:08:41
Hauke
Hätte ich auch drauf kommen können. :D
Allerdings taucht immer noch ein Fehler auf.
Userbild
Anzeige
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:12:52
Anton
Glaub oTargetSheet muss noch bei allen .cells gesetzt werden, da ohne With :)
VG Anton
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:20:03
Hauke
Hallo Anton,
das habe ich auch schon versucht, in diesem Fall mit oSourceBook. Es hilft aber leider auch nicht.
VG,
Hauke
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:22:09
Anton
oSourceBook wird erst weiter unten definiert. Versuch es mal vor der Fehlerzeile zu platzieren.
VG Anton
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:25:26
Max2
Bei .Cells muss es folgend angegeben werden:
Set ws = ThisWorkbook.Sheets(1)
With ws
lzeile = .Cells(....
Wenn du nur Cells schreibst dann gilt es für das aktuell aktive Blatt.
erspart Code ist aber auch fehleranfällig
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:22:33
Max2
Hier die Datei: https://www.herber.de/bbs/user/111104.xlsm
schau dir mal an wie ich den Code verändert habe
so wie du es gemacht hast ist es unzulässig weil er nicht weiß wo er die letzte Zeile sich holen soll.
Anzeige
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:35:11
Hauke
Hallo Max,
vielen Dank! Das funktionert super. Allerdings wird nur die Spalte A kopiert, der Rest leider nicht.
Das hier ist die Datenquelle:
Userbild
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:38:39
Hauke
Okay, Frage selbst beantwortet. :D
Vielen Dank Max2!!!
AW: Datei öffnen, Range kopieren, schließen
02.02.2017 16:48:44
Max2
Kein Problem.
Achso und mir ist noch aufgefallen dass du folgendes ändern musst:
(Fett markiert was geändert wurde)

lzeile = .Cells(.Rows.Count, 1).End(xlUp).Row
In:
lzeile = .Cells(.Rows.Count, 2).End(xlUp).Row

Und Hier:

With oTargetSheet   'Daten in TargetSheet hinten einfügen
lzeile = .Cells(.Rows.Count, 2).End(xlUp).Row   'letzte zeile in  _
TargetSheet
.Range(.Cells(lzeile, 1), .Cells(lzeile + lngLetzteZeile,  _
lngLetzteSpalte)). _
PasteSpecial Paste:=xlPasteValues
End With

Noch unbedingt das:

With oTargetSheet   'Daten in TargetSheet hinten einfügen
lzeile = .Cells(.Rows.Count, 2).End(xlUp).Row   'letzte zeile in  _
TargetSheet
.Range(.Cells(lzeile + 1, 1), .Cells(lzeile + lngLetzteZeile,  _
lngLetzteSpalte)). _
PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False
End With

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige