Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
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
Inhaltsverzeichnis

CSV-Import mittels VBA ohne Leerzeilen

CSV-Import mittels VBA ohne Leerzeilen
28.07.2020 15:24:04
Daniel
Hallo Profis,
ich würde gerne eine CSV-Datei in Excel importieren, diese hat allerdings ca. 500.000 Zeilen. Hinzu kommt das Problem, dass in der CSV sehr viele leere Zeilen dazwischen sind und so die Anzahl der Zeilen mehrere Mio. beträgt.
Folgendes bräuchte ich und wäre perfekt :-)
- Import einer CSV-Datei mittels Auswahlfenster
- Bei der CSV-Datei (getrennt durch Komma) wird der 3. Wert (Also: Daniel,Diers,,5,8) geprüft. Ist dieser, wie hier der Fall, leer, so soll diese Zeile nicht importiert werden
- Import der Datei in einen bestimtmen Excel-Reiter "Update"
Ist sowas irgendwie möglich?
Ganz großen Dank schon einmal, das würde mir so extrem weiterhelfen :-)
VG
Daniel

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PQ oder OPEN file FOR READING
28.07.2020 15:35:20
Fennek
Hallo,
versuche es mit PowerQuery (ich habe keine Ahnung). Falls das nicht klappen sollte, mit der alten OPEN file geht es in jedem Fall.
mfg
AW: CSV-Import mittels VBA ohne Leerzeilen
28.07.2020 18:32:13
Günther
Moin,
großartige und sehr anschauliche Problembeschreibung uns schicke (auf wenige Zeilen gekürzte) Muster-csv … :-(
Ja, Power Query!
Gruß
Günther  |  mein Excel-Blog
AW: CSV-Import mittels VBA ohne Leerzeilen
28.07.2020 20:03:04
volti
Hallo Daniel,
hier mal eine fixe Idee zu Deinem Vorhaben via Classic VBA.
Schau mal, ob's in Deinem Sinne funktioniert und auch die 500.000 Zeilen schafft.
[+][-]
Sub Test() Dim iFF As Integer, iZeile As Long, iOutZeile As Long Dim sFilename As String, sData() As String, sSpArr() As String Dim bCheck As Boolean Application.ScreenUpdating = False With ThisWorkbook.Sheets("Update") 'Datei auswählen sFilename = Application.GetOpenFileName("csv files (*.csv), *.csv") If sFilename <> "" Then 'Daten in Zeilen-Array einlesen iFF = FreeFile() Open sFilename For Input As iFF sData = Split(Input(LOF(iFF), #iFF), vbCrLf) Close iFF 'Alle Zeilen durchgehen For iZeile = 0 To UBound(sData) If sData(iZeile) <> "" Then 'Leerzeile? sSpArr = Split(sData(iZeile), ",") 'Trenner ggf. anpassen bCheck = True If UBound(sSpArr) > 2 Then If sSpArr(2) = "" Then bCheck = False '3. Feld leer? End If If Len(sData(iZeile)) = UBound(sSpArr) Then bCheck = False If bCheck = True Then iOutZeile = iOutZeile + 1 .Cells(iOutZeile, "A").Resize(1, UBound(sSpArr) + 1) _ = Application.Transpose(Application.Transpose(sSpArr)) End If End If Next iZeile MsgBox "Habe Fertig", vbInformation, "Daten einlesen" End If End With Application.ScreenUpdating = True End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: CSV-Import mittels VBA ohne Leerzeilen
28.07.2020 20:07:58
volti
Und schon das erste Update. Kleine Korrektur...
[+][-]
Sub Test() Dim iFF As Integer, iZeile As Long, iOutZeile As Long Dim sFilename As String, sData() As String, sSpArr() As String Dim bCheck As Boolean Application.ScreenUpdating = False With ThisWorkbook.Sheets("Update") 'Datei auswählen sFilename = Application.GetOpenFileName("csv files (*.csv), *.csv") If sFilename <> "" Then 'Daten in Zeilen-Array einlesen iFF = FreeFile() Open sFilename For Input As iFF sData = Split(Input(LOF(iFF), #iFF), vbCrLf) Close iFF 'Alle Zeilen durchgehen For iZeile = 0 To UBound(sData) If sData(iZeile) <> "" Then 'Leerzeile? sSpArr = Split(sData(iZeile), ",") 'Trenner ggf. anpassen bCheck = True If UBound(sSpArr) > 2 Then If sSpArr(2) = "" Then bCheck = False '3. Feld leer? End If If Len(sData(iZeile)) = UBound(sSpArr) Then bCheck = False If bCheck = True Then iOutZeile = iOutZeile + 1 .Cells(iOutZeile, "A").Resize(1, UBound(sSpArr) + 1) = sSpArr End If End If Next iZeile MsgBox "Habe Fertig", vbInformation, "Daten einlesen" End If End With Application.ScreenUpdating = True End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige