1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich möchte gerne alle Dateiinhalte untereinander ausgelesen bekommen, jedoch
erhalte ich nur den Inhalt der zuletzt ausgelesenen Datei. Ich bitte um Hilfe!
Desweiteren möchte ich gerne einen abgesteckten Bereich A2:A10 aus der zu
durchsuchenden Datei in eine Zeile in der Zieldatei "Auswertung" kopieren.

Vielen Dank für eure Tipps im Voraus! (P.S. Das Script ist von Oliver)

Option Explicit

Dim objFileSystemObject As Object
Dim objDateien As Object
Dim objWeitereDateien As Object
Dim objDatei As Object
Dim lngFirstFreeRow As Long
Dim wksAuswertsheet As Worksheet
'#################################################################
##########################

Sub Auswertung_start()
'Objektverweise zuweisen
Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set objDateien =
objFileSystemObject.getfolder("C:\Users\Philipp\Desktop\NEW\Convertiert")
Set wksAuswertsheet = ThisWorkbook.Sheets("Auswertung")

Call Dateien_auswerten

'Zuweisung wieder aufheben
Set objFileSystemObject = Nothing
Set objDateien = Nothing
Set wksAuswertsheet = Nothing

'Text aus Statusbar löschen
Application.StatusBar = ""
End Sub
'#################################################################
##########################

Sub Dateien_auswerten()

Application.ScreenUpdating = False

For Each objDatei In objDateien.Files
If Right(objDatei.Name, 4) = ".csv" Then

'erste freie Zelle in der Zieldatei in Spalte A ermitteln
lngFirstFreeRow = wksAuswertsheet.Cells(Rows.Count, 1).End(xlUp).Offset(1,
0).Row

'Meldung in Statusbar anzeigen
Application.StatusBar = "Datei """ & objDatei.Name & """ wird ausgelesen!"
DoEvents

'Gefundene Datei unsichtbar öffnen
GetObject (objDatei)

'Wert aus geöffneter Datei aus dem Tabellenblatt 1 aus Zelle _
D20 in die erste freie Zelle in Spalte A übertragen = KundenNummer
wksAuswertsheet.Cells(lngFirstFreeRow, 2) =
Workbooks(objDatei.Name).Sheets(1).Range("H2")

'Wert aus geöffneter Datei aus dem Tabellenblatt 1 aus Zelle _
D20 in die erste freie Zelle in Spalte A übertragen = BelegDatum
wksAuswertsheet.Cells(lngFirstFreeRow, 3) =
Workbooks(objDatei.Name).Sheets(1).Range("H4")

'Wert aus geöffneter Datei aus dem Tabellenblatt 1 aus Zelle _
D20 in die erste freie Zelle in Spalte A übertragen = LieferDatum
wksAuswertsheet.Cells(lngFirstFreeRow, 4) =
Workbooks(objDatei.Name).Sheets(1).Range("H5")

'Wert aus geöffneter Datei aus dem Tabellenblatt 1 aus Zelle _
D20 in die erste freie Zelle in Spalte A übertragen = AnsprechPartner
wksAuswertsheet.Cells(lngFirstFreeRow, 5) =
Workbooks(objDatei.Name).Sheets(1).Range("H5")

'Wert aus geöffneter Datei aus dem Tabellenblatt 1 aus Zelle _
D20 in die erste freie Zelle in Spalte A übertragen = RechnungsNr
wksAuswertsheet.Cells(lngFirstFreeRow, 6) =
Workbooks(objDatei.Name).Sheets(1).Name

'Geöffnete Datei wieder schließen ohne zu speichern
Workbooks(objDatei.Name).Close savechanges:=False

End If
Next

'Nächstes Verzeichnis abfragen
For Each objWeitereDateien In objDateien.subfolders
Set objDateien = objWeitereDateien
Call Dateien_auswerten
Next

End Sub



Besten Gruß
Philipp S.

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Philipp,

das Makro ermittelt die erste freie Zeile, in der die Datensätze geschrieben werden sollen, in der Spalte A des Tabellenblatt "Auswertung". Die eingelesenen Daten werden aber erst ab Spalte B in das Arbeitsblatt "Auswertung" geschrieben. Da die Spalte A somit leer bleibt, werden die Daten immer in die gleiche Zeile geschrieben.

Ersetze die Zeile
lngFirstFreeRow = wksAuswertsheet.Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row

durch
lngFirstFreeRow = wksAuswertsheet.Cells(Rows.Count, 2).End(xlUp).Offset(1,0).Row

dann sollte es funktionieren.

Oder, wenn die Daten in Spalte A eingelesen werden sollen, dann ändere die Zeile
wksAuswertsheet.Cells(lngFirstFreeRow, 2) =Workbooks(objDatei.Name).Sheets(1).Range("H2")

in
wksAuswertsheet.Cells(lngFirstFreeRow, 1) =Workbooks(objDatei.Name).Sheets(1).Range("H2")

Die anderen Zeilen musst du ggf. auch entsprechend anpassen.

Außerdem wird die Zelle H5 sowohl in Spalte D als auch in Spalte E eingelesen.
Ist das so gewollt?

Desweiteren möchte ich gerne einen abgesteckten Bereich A2:A10 aus der zu
durchsuchenden Datei in eine Zeile in der Zieldatei "Auswertung" kopieren.


Sollen die Daten dann ab Spalte G der jeweiligen Zeilen angefügt werden?

Gruß

M.O.
0 Punkte
Beantwortet von
Vielen Dank Mo für die schnelle und gute Hilfe.

Brauche ich dann für das Kopieren der Zellen für jede Spalte eine neue If
Schleife, in der ich die Werte deines obengenannten Befehls um 1 immer
erhöhe? Oder genügt eine If Abfrage.

Ich möchte diesen abgesteckten Bereich in die Spalte A gebündelt in die
erste freie Zelle kopieren.

Hast du eine Idee?

Beste Grüße
PhilippS
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Philipp,

was verstehst du unter "gebündelt"?
Soll der Inhalt dieses Bereiches zusammengefasst in eine Zelle geschrieben werden? Oder sollen die entsprechenden Daten aus dem Bereich A2 bis A10 jeweils in eine eigene Zelle geschrieben werden?

Gruß

M.O.
...