Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt von 12 versch. csv-Dateien in eine xls-Date

Inhalt von 12 versch. csv-Dateien in eine xls-Date
11.07.2013 10:21:49
12
Hallo,
ist es möglich (wahrscheinlich mit VBA) den Inhalt von 12 verschiedenen csv-Dateien in eine Excel-Datei zu kopieren?
Ich habe also jeden Monat diese 12 csv-Dateien vorliegen, die immer den selben Namen haben. z.B. Brutto52.csv, Brutto53.csv, Brutto54.csv usw.
Der Inhalt ist jeden Monat unterschiedlich lang, also variierende Zeilenanzahl, befindet sich aber immer in den Spalten A-K.
Diese Inhalte möchte ich automatisch in eine neue Excel-Datei kopieren lassen. Also zuerst den Inhalt von Brutto52.csv und direkt darunter den Inhalt von Brutto53.csv usw.
Kann mir dazu vielleicht jemand helfen?
Viele Grüße
Ronald

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
11.07.2013 13:25:00
12
Danke für die Antwort und den Link.
Ich habe versucht, das mal für meine Bedürfnisse anzupassen. Der Import hat geklappt, allerdings werden jetzt die Spalten irgendwie verschoben bzw. zusammengeführt. Ich habe dazu mal das Ergebnis als Datei hochgeladen. In der Datei sieht man ein Tabellenblatt (Brutto52) wie es vor dem Import aussieht und das Tabellenblatt (Ergebnis) wie es nach dem Import aussieht.
Ich habe keine Ahnung was ich tun muss, damit das Format der Tabelle gleich bleibt.
https://www.herber.de/bbs/user/86314.xlsm

Anzeige
AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
11.07.2013 21:34:25
12
Hallo Ronald,
2 Punkte müssen korrigiert werden:
1. Die Berechnung der letzten Zeile mit Daten,
da in deinen CSV-Dateien die Spalte 2 (B) nicht immer in der Letzten Zeile Daten enthält.
2. Das Trennzeichen zwischen den Spalten im Textfile muss auf Semikolon geändert werden.
Gruß
Franz
Sub CSV_Import()
Dim strPfad As String
Dim lngLastRow As Long
Dim myFileSystemObject, myFiles
' Pfad hier anpassen
strPfad = "C:\Users\Holz.DIAKOSO\Desktop\CSV-Import\"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
For Each myFiles In myFileSystemObject.GetFolder(strPfad).Files
If InStr(UCase(myFiles), ".CSV") Then
With ActiveSheet.UsedRange
lngLastRow = .Row + .Rows.Count
If lngLastRow = 2 Then lngLastRow = 1
End With
'Die nächsten beiden Zeilen weglassen, wenn der Dateiname nicht in der Liste _
erscheinen soll
ActiveSheet.Cells(lngLastRow, 1) = myFiles
lngLastRow = lngLastRow + 1
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & myFiles, Destination:=ActiveSheet.Cells(lngLastRow, 1))
.Name = myFiles
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
Next myFiles
End Sub

Anzeige
AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
12.07.2013 12:07:11
12
Franz, Du bist der Beste.
Vielen, Vielen Dank, dass hilft mir super.
Gruß
Ronald

AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
12.07.2013 12:21:16
12
Mir ist gerade noch was aufgefallen.
1. Die Buchstaben ü,ä usw. werden nicht richtig dargestellt.
2. Jetzt wird die Datei Brutto71 als erstes importiert und dann die Brutto70 usw. - Kann man das noch umkehren?
Für eine Lösung wäre ich sehr dankbar.
Viele Grüße
Ronald

AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
12.07.2013 14:41:31
12
Hallo Ronald,
zu 1.
hier hab ich einen Parameter geändert, so dss jetzt der Windowssystemzeichensatz verwendet wird statt 850.
zu 2.
bei mir kommen auf Grund welcher Einstellung auch immer die Dateinamen immer nach Name sortiert raus.
Ich hab das Einlesen der Namen modiefiert und eine Sortierroutine für 1-spaltige Datenarrays hinzugefügt.
Gruß
Franz
Sub CSV_Import()
Dim strPfad As String
Dim lngLastRow As Long
Dim myFileSystemObject, myFiles, arrFiles(), intFile As Integer
' Pfad hier anpassen
strPfad = "C:\Users\Holz.DIAKOSO\Desktop\CSV-Import\"
strPfad = "D:\Test\DatenNeu\"
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
'CSV-Dateien in Array einlesen
For Each myFiles In myFileSystemObject.GetFolder(strPfad).Files
If InStr(UCase(myFiles), ".CSV") Then
intFile = intFile + 1
ReDim Preserve arrFiles(1 To intFile)
arrFiles(intFile) = myFiles
End If
Next
Set myFileSystemObject = Nothing
'Array mit Dateinamen sortieren, wenn mehr als 1 Datei
If intFile > 1 Then Call QuickSort(VA_array:=arrFiles)
If intFile = 0 Then
MsgBox "Keine CSV-Dateien im Ordner " & strPfad
Exit Sub
End If
For Each myFiles In arrFiles
With ActiveSheet.UsedRange
lngLastRow = .Row + .Rows.Count
If lngLastRow = 2 Then lngLastRow = 1
End With
'Die nächsten beiden Zeilen weglassen, wenn der Dateiname nicht in der Liste _
erscheinen soll
ActiveSheet.Cells(lngLastRow, 1) = myFiles
lngLastRow = lngLastRow + 1
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & myFiles, Destination:=ActiveSheet.Cells(lngLastRow, 1))
.Name = myFiles
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows            'Korrektur war 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Next myFiles
Erase arrFiles
End Sub
Public Sub QuickSort(ByRef VA_array, Optional V_Low1, Optional V_high1)
On Error Resume Next
Dim V_Low2, V_high2, V_loop As Integer
Dim V_val1, V_val2 As Variant
If IsMissing(V_Low1) Then
V_Low1 = LBound(VA_array, 1)
End If
If IsMissing(V_high1) Then
V_high1 = UBound(VA_array, 1)
End If
V_Low2 = V_Low1
V_high2 = V_high1
V_val1 = VA_array((V_Low1 + V_high1) / 2)
While (V_Low2  V_val1 And _
V_high2 > V_Low1)
V_high2 = V_high2 - 1
Wend
If (V_Low2  V_Low1) Then Call _
QuickSort(VA_array, V_Low1, V_high2)
If (V_Low2 

Anzeige
AW: Inhalt von 12 versch. csv-Dateien in eine xls-Date
12.07.2013 15:18:28
12
Super Franz, vielen Dank für Deine Bemühungen.
Viele Grüße
Ronald

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige