auch nach stundenlangem Suchen auf diversen Excel-Seiten, bin ich leider nicht auf eine Lösung meines Problems gestoßen.
Mein Ziel ist es, mehrere CSV Dateien, die möglicherweise Überlänge haben (mehr als 65.536 Zeilen), aber alle in einem Ordner gespeichert sind, zur Weiterverarbeitung verfügbar zu machen (sprich ggf. zu splitten).
Für einzelne CSV-Dateien funktioniert dieses auch ganz wunderbar.
Dazu benutze ich folgenden Code (den ich vor geraumer Zeit im Internet gefunden habe).
Option Explicit
Option Base 1
Dim FileName As Variant
Dim FileNum As Integer
Dim ResultStr As String
Dim wsSheet As Worksheet
Dim strValues() As String
Dim lngRows As Long
Dim lngRow As Long
Dim intSheet As Integer
FileName = Application.GetOpenFilename("Textdateien " & _
"(*.txt; *.csv;*.asc),*.txt; *.csv; *.asc")
If FileName = "" Or FileName = "Falsch" Then Exit Sub
FileNum = FreeFile()
On Error GoTo ErrorHandler
Open FileName For Input As #FileNum
Application.ScreenUpdating = False
Workbooks.Add template:=xlWorksheet
lngRows = ActiveSheet.Rows.Count
lngRow = 1
intSheet = 1
ReDim strValues(lngRows, 1)
Application.StatusBar = " Einlesen Blatt " & intSheet & " / 0 %"
Do While Seek(FileNum) Tabulator " & Chr(13) & _
"2 ==> Semikolon" & Chr(13) & _
"3 ==> Komma" & Chr(13) & _
"4 ==> Leerzeichen" & Chr(13) & _
"5 ==> Andere" & Chr(13) & _
"Trennzeichen wählen", "1", Type:=1)
Loop Until CInt(strDelimiter) >= 0 And CInt(strDelimiter) Abbruch ", _
"Trennzeichen wählen", Type:=2)
If strDelimOther = "00" Then GoTo ErrorHandler
End If
intSheet = 0
For Each wsSheet In ActiveWorkbook.Worksheets
intSheet = intSheet + 1
Application.StatusBar = "Bearbeiten von Blatt " & intSheet
With wsSheet
.Range("A:A").TextToColumns Destination:=.Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=IIf(strDelimiter = "1", True, False), _
Semicolon:=IIf(strDelimiter = "2", True, False), _
Comma:=IIf(strDelimiter = "3", True, False), _
Space:=IIf(strDelimiter = "4", True, False), _
Other:=IIf(strDelimiter = "5", True, False), _
OtherChar:=IIf(strDelimiter = "5", strDelimOther, "")
End With
Next wsSheet
ErrorHandler:
Application.ScreenUpdating = True
Application.StatusBar = "Fertig"
End Sub
Nun würde ich aber gerne einfach einen Ordner auswählen, sodass sämtliche CSV-Dateien aus diesem Ordner diese Routine durchlaufen.Bevor die nächste Datei aus diesem Ordner ausgewählt wird, sollte die (ggf. gesplittete) Datei unter demselben Arbeitsmappenamen im xls Format im selben Ordner gespeichert werden.
Dabei wäre es schön, wenn die Tabellenblätter genauso heißen würden, wie das (einzige) in der CSV Datei (was genauso heißt wie die CSV-Datei) plus fortlaufende Nummer (1,2,...).
Ich hoffe Ihr könnt mir weiterhelfen.
Schonmal vielen Dank für Eure Hilfe.
Liebe Grüße
Teck XL