Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1096to1100
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
mehrere CSV-Dateien in einem Ordner splitten
Teck
Hallo Excel Experten,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Warum...
19.08.2009 14:03:24
Teck
Hallo Ramses,
vielen Dank für Deine Antwort.
Nur leider kann ich nicht nachvollziehen, inwiefern der von Dir genannte Code, mein Ziel, mehrere CSV Dateien bei Überlänge automatisch (nacheinander) zu splitten und so für die Weiterverarbeitung (Diagrammerstellung) zu nutzen, erreichen kann.
Es fängt schon bei der Auswahl an. Hier hätte ich gerne eine Ordnerauswahl und keine normale Dateiauswahl, sodass der komplette Ordner auf Überlänge geprüft wird.
Vielleicht sehe ich ja auch nur den Wald voller VBA-Unkenntnis nicht, aber momentan kann ich leider nichts mit dem Beispielcode "Read_Externe_Datei_mit_Semikolon_in_Array" anfangen.
Hilf mir doch bitte ein wenig auf die Sprünge ;)
Lässt sich das nicht so realisieren, dass das von mir gepostete Makro "nur" auf meine Bedürfnisse angepasst werden kann?
Leider weiß ich aufgrund fehlernder VBA Kenntnisse selber keine Lösung, deshalb wende ich mich ja an dieses ausgezeichnete Forum :)
Liebe Grüße
Teck XL
Anzeige
AW: Warum...
19.08.2009 15:26:00
Ramses
Hallo
Du sprachst von EINER Csv Datei in MEHRERE Splitten, nicht von einem ganzen Ordner.
In dem Beispielcode musst du bloss die Datei angeben, bei der Frage "Wieviel Spalten von links sollen entfernt werden" gibst du "0" ein, und wieviele Spalten gibst du eben 256 ein, bzw. soviele wie deine Datei spalten hat.
Der Rest geht automatisch.
Ein Problem sehe ich da nicht. Es macht genau das was du willst.
Eine überlange Datei in mehrere Tabellen aufteilen.
Dass Du dann noch Diagramme darauf erstellen willst hast du nicht geschireben.
Kauf dir EXCEL 2007, dann ist das Problem, auch mit dem Diagramm, sowieso gelöst.
Gruss Rainer
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige