Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Viele CSV bzw. xl-Files in einem File zusammenfüge

Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 13:45:09
Thommy
Hi Leute! Bin neu hier, scheint aber echt gut zu sein
Ich soll aus vielen CSV-Files jede Woche EIN Excel-file machen um dieses dann in eine Datenbank zu importieren.
Ich habe diese Woche 14 .csv Files die ich in einem File zusammenfassen muss.
Sie sind alle identisch aufgebaut.
Die Tabellenblätter haben den namen unter dem sie auch abgespeichert sind also nicht "Tabelle1"
Ich benötige aber nun alle Daten in einem File als eine Tabelle.
Diese Vorgang muss ich jede woche durchführen, allerdings ändert sich die Anzahl der files auch jede woche.
Ich wollte fragen ob es eine möglichkeit gibt dies zu automatisieren?
Würde mir sehr viel weiterhelfen!!!
Vielen Dank!
Schöne Grüße
Blattl

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 13:48:24
Rudi
Hallo,
, scheint aber echt gut zu sein

Es ist gut hier.
Ich wollte fragen ob es eine möglichkeit gibt dies zu automatisieren?

Ja.
Stehen die .csv alle in einem Ordner und sonst keine? Wäre hilfreich.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 13:51:00
Thommy
Na dann bin ich ja froh ;-)
Jep, sind alle in einem Verzeichnis und es gibt keine anderen darin
Danke
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:08:00
Rudi
Hallo,
in ein Modul:

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String, wksDaten As Worksheet
Const strPath As String = "c:\temp\test" 'Pfad für .csv
Const strDelim As String = ";"   'Trennzeichen
Set wksDaten = ThisWorkbook.Sheets(1)
wksDaten.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksDaten
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1).End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
End With
Loop
Close 1
End If
Next oFile
Set oFolder = Nothing
Set FS = Nothing
End Sub

Die Daten werden in Blatt 1 der Mappe geschrieben, in der das Makro steht.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:14:00
Thommy
Hey danke!!
hat schon mal sehr gut hin gehauen, es kommt aber noch ein fehler:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler
und er markiert dieses Zeile:
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1).End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
an was kann das liegen?
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:21:16
Rudi
Hallo,
geh mal im Haltemodus mit der Maus auf Ubound(vntTemp) und überprüfe den Wert. Evtl. enthält die csv kein ;
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:26:14
Thommy
wenn ich mit der Maus darauf gehe, kommt UBound(vntTemp)=-1
ach und übrigens danke für die wirklich schnellen antworten ;-)
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:36:00
Rudi
Hallo,
dann sin Leerzeilen in der .csv.

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String, wksDaten As Worksheet
Const strPath As String = "c:\temp\test" 'Pfad für .csv
Const strDelim As String = ";"   'Trennzeichen
Set wksDaten = ThisWorkbook.Sheets(1)
wksDaten.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksDaten
If UBound(vntTemp) > -1 Then
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1).End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
End If
End With
Loop
Close 1
End If
Next oFile
Set oFolder = Nothing
Set FS = Nothing
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 14:49:00
Thommy
Hi!
Danke vielmals! Hat jetzt wunderbar geklappt!!!
Gleich nochmal ne frage: ;-)
ist es auch jetzt möglich, dass er nur von der ersten datei die er findet die Spaltenüberschriften nimmt und bei allen anderen in Zeile 2 anfängt zu übernehmen?
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
20.03.2007 16:03:49
Rudi
Hallo,
ja, das geht mit ein bisschen Nachdenken auch.

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String, wksDaten As Worksheet
Dim blnHeader As Boolean, blnFirstRow As Boolean
Const strPath As String = "c:\temp\test" 'Pfad für .csv
Const strDelim As String = ";"   'Trennzeichen
Set wksDaten = ThisWorkbook.Sheets(1)
wksDaten.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
blnFirstRow = True
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksDaten
If UBound(vntTemp) > -1 Then
If blnHeader = False Or blnFirstRow = False Then
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1).End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
blnHeader = True
End If
End If
End With
blnFirstRow = False
Loop
Close 1
End If
Next oFile
wksDaten.Rows(1).Delete
Set oFolder = Nothing
Set FS = Nothing
End Sub
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 08:23:21
Thommy
Hallo Rudi!
Vielen Dank für den Code, funktioniert einwandfrei!! :-)
Ja nachdenken hilft bei mir in der hinsicht nicht wirklich viel, weil ich 0 Ahnung von VBA-Codes habe.
Ich habe jetzt noch einen Code gefunden, aus einem vorgefertigten Excel-file, allerdings fügt mir der nur .xls Dateien zusammen, kann man des so umformen, dass es meine csv-files zusammenfügt und wieder die überschriften nur einmal mitnimmt?
Ich häng dir die Datei einfach mal an... Danke schon mal!!!
https://www.herber.de/bbs/user/41245.xls
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 11:11:45
Thommy
Ich hoffe der Link funktioniert? weil meine verbindung etwas spinnt...
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 11:55:00
Rudi
Hallo,
ja, kann man. Aber warum?
Der Code ist viel zu lang und zu langsam.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 13:09:00
Thommy
Hallo,
dacht nur, weil ich des tool jemand weiter geben muss, der dann damit arbeiten soll und des verzeichnis wird wahrscheinlich jede woche anders sein.
Wie würde das gehen? (interessehalber, wenns schnell erklärt ist)
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 13:13:34
Rudi
Hallo,
wenn es nur darum geht, einen Ordner auswählen zu können:

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String, wksDaten As Worksheet
Dim blnHeader As Boolean, blnFirstRow As Boolean
Dim strPath As String
Const strDelim As String = ";"   'Trennzeichen
'Ordner wählen
With Application.FileDialog(4)
.InitialFileName = "C:\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strPath = .SelectedItems(1)
End If
End With
If strPath = "" Then Exit Sub
Set wksDaten = ThisWorkbook.Sheets(1)
wksDaten.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
blnFirstRow = True
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksDaten
If UBound(vntTemp) > -1 Then
If blnHeader = False Or blnFirstRow = False Then
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1). _
End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
blnHeader = True
End If
End If
End With
blnFirstRow = False
Loop
Close 1
End If
Next oFile
wksDaten.Rows(1).Delete
Set oFolder = Nothing
Set FS = Nothing
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 13:27:38
Thommy
Hey du bist ja klasse, danke!! ;-)
wenn jetz noch des "speichern unter" fenster nach dem ausführen von alleine auftaucht, dann bin ich super glücklich!? ;-)
ansonsten ist das schon super!
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 14:16:56
Rudi
Hallo,

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String, wksDaten As Worksheet
Dim blnHeader As Boolean, blnFirstRow As Boolean
Dim strPath As String, wkbCSV As Workbook, strDateiname As Variant
Const strDelim As String = ";"   'Trennzeichen
'Ordner wählen
With Application.FileDialog(4)
.InitialFileName = "C:\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strPath = .SelectedItems(1)
End If
End With
If strPath = "" Then Exit Sub
Set wkbCSV = Workbooks.Add(1)
Set wksDaten = wkbCSV.Sheets(1)
wksDaten.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
blnFirstRow = True
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksDaten
If UBound(vntTemp) > -1 Then
If blnHeader = False Or blnFirstRow = False Then
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1). _
End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
blnHeader = True
End If
End If
End With
blnFirstRow = False
Loop
Close 1
End If
Next oFile
wksDaten.Rows(1).Delete
Set oFolder = Nothing
Set FS = Nothing
If wksDaten.Range("A1").CurrentRegion.Cells.Count > 1 Then
strDateiname = Application.GetSaveAsFilename(filefilter:="Microsoft-Excel Arbeitsmappe (*. _
xls),*.xls")
If strDateiname  False Then wkbCSV.SaveAs strDateiname
Else
wkbCSV.Close False
MsgBox "Keine Daten"
End If
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 14:30:45
Thommy
Vielen Dank für die großartige Hilfe!
Viele Grüße und weiter so,
Thommy
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 15:18:24
Thommy
Hi Rudi!
sorry, aber es ist noch was aufgetaucht wo ich deine hilfe nochmal gut gebrauchen könnte:
und zwar möchte ich noch, dass er mir vor dem speichern folgenden Code auführt:

Sub FILTER_TYP()
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("C1").Select
ActiveCell.FormulaR1C1 = "FILTER_TYP"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=MID(RC[-1],7,5)"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C600"), Type:=xlFillDefault
Range("C2:C600").Select
ActiveWindow.ScrollRow = 572
ActiveWindow.ScrollRow = 552
ActiveWindow.ScrollRow = 526
ActiveWindow.ScrollRow = 491
ActiveWindow.ScrollRow = 431
ActiveWindow.ScrollRow = 371
ActiveWindow.ScrollRow = 312
ActiveWindow.ScrollRow = 252
ActiveWindow.ScrollRow = 203
ActiveWindow.ScrollRow = 159
ActiveWindow.ScrollRow = 139
ActiveWindow.ScrollRow = 127
ActiveWindow.ScrollRow = 115
ActiveWindow.ScrollRow = 103
ActiveWindow.ScrollRow = 91
ActiveWindow.ScrollRow = 85
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 78
ActiveWindow.ScrollRow = 76
ActiveWindow.ScrollRow = 71
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 64
ActiveWindow.ScrollRow = 59
ActiveWindow.ScrollRow = 58
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 37
ActiveWindow.ScrollRow = 33
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 1
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
Sheets("Tabelle1").Select
Sheets("Tabelle1").Name = "Gesamt_CSV"
End Sub

Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
21.03.2007 16:01:28
Rudi
Hallo,
da weigere ich mich aber, sowas einzubauen. ;-) Das geht besser.

Sub CSVzusammenfuegen()
Dim FS As Object, oFolder As Object, oFile As Object
Dim vntTemp, strTemp As String
Dim wkbCSV As Workbook, wksCSV As Worksheet
Dim blnHeader As Boolean, blnFirstRow As Boolean
Dim strCsvPath As String, strDateiName As Variant
Dim lngLastRow As Long
Const strDelim As String = ";"   'Trennzeichen
'Ordner wählen
With Application.FileDialog(4)
.InitialFileName = "C:\"
.InitialView = 2
.Title = "Bitte einen Ordner wählen"
If .Show = -1 Then
strCsvPath = .SelectedItems(1)
End If
End With
If strCsvPath = "" Then Exit Sub
If Dir(strCsvPath & "\*.csv", vbNormal) = "" Then
MsgBox "Keine .CSV im Ordner."
Exit Sub
End If
Set wkbCSV = Workbooks.Add(1)
Set wksCSV = wkbCSV.Sheets(1)
wksCSV.Cells.Clear
Set FS = CreateObject("scripting.filesystemobject")
Set oFolder = FS.getfolder(strCsvPath)
For Each oFile In oFolder.Files
If oFile.Name Like "*.csv" Then
Open oFile For Input As #1
blnFirstRow = True
Do While Not EOF(1)
Line Input #1, strTemp
vntTemp = Split(strTemp, strDelim)
With wksCSV
If UBound(vntTemp) > -1 Then
If blnHeader = False Or blnFirstRow = False Then
.Range(.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0), .Cells(Rows.Count, 1). _
End(xlUp).Offset(1, UBound(vntTemp))) = vntTemp
blnHeader = True
End If
End If
End With
blnFirstRow = False
Loop
Close 1
End If
Next oFile
Set oFolder = Nothing
Set FS = Nothing
With wksCSV
.Rows(1).Delete
lngLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
.Columns(3).Insert Shift:=xlToRight
.Range("C1") = "FILTER_TYP"
.Range(.Cells(2, 3), .Cells(lngLastRow, 3)).FormulaR1C1 = "=MID(RC[-1],7,5)"
.Range(.Cells(2, 3), .Cells(lngLastRow, 3)) = .Range(.Cells(2, 3), .Cells(lngLastRow, 3)). _
Value
.Name = "Gesamt_CSV"
End With
'Datei speichern
strDateiName = Application.GetSaveAsFilename("gesamt_CSV", "Microsoft-Excel Arbeitsmappe (*. _
xls),*.xls", , "Datei speichern unter")
If strDateiName  False Then wkbCSV.SaveAs strDateiName
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Viele CSV bzw. xl-Files in einem File zusammenfüge
22.03.2007 08:02:00
Thommy
Hab ich mir fast gedacht, dass du das sagst ;-) Makro-Rekorder halt ;-)
Aber Danke dir echt!! Hast mir super geholfen!!
Jetzt glaub ich hab ichs wirklich :-)
Ich meld mich dann mal wieder, falls ich mal wo Hilfe brauch
Schöne Grüße
Thommy

58 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige