950 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo an alle,

ich habe das folgende Problem, dass ich -wie oben beschrieben- aus vielen Excel Dateien immer aus einem bestimmten Arbeitsblatt Namens "temperature" den ganzen Inhalt von C1 an sammeln möchte.

Dabei sollen die Daten hintereinander, beginnend bei C1 fortgeschrieben werden, also aus der ersten Datei alles von C bis beispielhaft XY, aus der zweiten Datei beginnend bei XZ bis ACA usw

Bisher habe ich leider keine Lösungen finden können und würde mich über Hilfe sehr freuen.

Viele Grüße

23 Antworten

0 Punkte
Beantwortet von
Hallo Mark .-)

Ist noch eine Prüfung des Worksheetnamens notwendig ?

Wenn ja!
Ein beliebiges Worksheet per Index ansprechen(welcher Index)
oder Überspringen!

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Mark .-)

Mit Worksheetprüfung,nur bei Fund wird kopiert!

Gruss Nighty

Anpassen
Dpfad = "J:\Temp\"
Deindung = "*.xls"
WksName = "temperature"


Sub DateienLesen()
Call EventsOff
Dim DateiName As String, WksName As String, Dpfad As String
Dim Lzeile As Long, Lspalte As Long
Dpfad = "J:\Temp\"
Deindung = "*.xls"
WksName = "temperature"
DateiName = Dir(Dpfad & Deindung)
Lzeile = ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row + 1
Do While DateiName <> ""
If ThisWorkbook.Name <> DateiName Then
Workbooks.Open Filename:=Dpfad & DateiName
If SheetExists("" & WksName) = True Then
If Workbooks(DateiName).Worksheets("" & WksName).Range("C1") <> "" Then
Lspalte = Lspalte + 1
ThisWorkbook.ActiveSheet.Cells(Lzeile, Lspalte) = Workbooks(DateiName).Worksheets("" & WksName).Range("C1")
End If
End If
Workbooks(DateiName).Close SaveChanges:=False
End If
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(strName) Is Nothing
End Function

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von
Hallo Nighty,

Das ist bestimmt ganz schön Arbeit. Ich kann mich nicht oft genug für die Mühe bedanken.

Also meine Leere Excel-Datei bleibt leider leer. Aber es wird kein Fehler angezeigt. Auf den Pfad greift Excel nicht zu (erkenne ich daran, dass der Pfad eine externe Festplatte ist und nicht leuchtet und arbeitet).
Ich habe es nun mit den Original Excel-Dateien in .xls versucht und in selbst erstellten .xlsx.
Und ich habe auch einmal mit und ohne Worksheetprüfung getestet.

Hast du vielleicht noch eine Idee?

Gruß Mark
0 Punkte
Beantwortet von
Hallo Mark .-)

Einige Möglichkeiten!

Geschützte Bereiche!
Verbundene Zellen!
Unerlaubte Netzwerkzugriffe!
oder
Lade die Quell wie die Zieldatei hier hoch!
Vorbereitete Mustervorlage!
oder
Per Email!
Oberley@T-Online.de

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Mark .-)

Oder überprüfe im Vbed im einzelschrittmodus diese Variable(mit der Mouse auf die Variable)
Lzeile = ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row + 1


Wenn du ganze Spalten bearbeitet hast,könnte die ermittelte Zeile zu hoch sein,Zeile 50 000 oder höher,dann siehst du sie auch nicht gleich :-)

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Nighty,

ich habe aus dem letzten Post von dir leider nichts verstanden und mir das Folgende zusammengereimt. Ich habe nun mit F8 versucht Einzelschritte auszuführen, aber er springt von "Call EventsOff" direkt zu "Public Sub EventsOff()". Wenn ich mit der Maus im F8-Modus auf "(Cells(Rows.Count, 1) klicke erscheint ein Popup-Fensterchen mit der Zahl 1048576.

Meintest du das?

Unter den folgenden Links habe ich die Zieldatei (eine leere Excel-Tabelle) und die Quelldatei hochgeladen. Die Quelldatei ist quasi eine gekürzte Variante mit "nur" 71 Spalten, die folgenden haben jeweils 413 Spalten alle mit 1696 Zeilen.

https://filer.net/get/wxea6ker8pkeuvio

https://filer.net/get/nm9gigyfihpukfcm

Gruß Mark
0 Punkte
Beantwortet von
Hallo Mark .-)

1048576 Zeilen sind dann bei dir belegt!
Wahrscheinlich nicht so gewollt?

1048577 erfolgt dann die Ausgabe

Muss aber kurz ins Krankenhaus,in 4 Tagen bin ich zurück

Dann schau ich mal drueber,oder andere User helfen kurz!

Bis dahin der Tip,ab der letzten genutzten Zeile ALLE LÖSCHEN
Nun wird die Ausgabe Sichtbar sein .-)

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Nighty,

dann wünsche ich dir erst mal gute Besserung! Vielen Dank nochmal.

Jede meiner Excel-Dateien (auch die neuen und leeren), haben ganz automatisch 1048576 Zeilen. Ist das bei euch anders?

Über weitere Erfahrungen und Ideen bin ich dankbar.


Gruß Mark
0 Punkte
Beantwortet von
Hallo Mark.-)

Abgenommen du hast 3 Zeilen von 1 000 000 belegt
Dann ist die Zeile 4 die nächste freie Zelle,nicht 1 000 000

Bis später!

Gruss Nighty
0 Punkte
Beantwortet von
Ja das verstehe ich schon, aber ist glaube ich nicht das Problem, Ich habe alle Zeilen gelöscht und es funktioniert trotzdem nicht :(

Gruß Mark
...