Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV Import - nicht alle Zeilen werden importiert

CSV Import - nicht alle Zeilen werden importiert
09.02.2016 16:28:36
Cora
Hallo liebe Forums-Mitglieder,
ich habe mit Makro-Programmierung leider quasi noch keine Erfahrung, und habe mir mit Vorlagen und Tipps&Tricks hier aus dem Forum eine Importmöglichkeit für CSV-Dateien zusammengebaut.
Leider wird hierbei nur der Inhalt der ersten 16 Zeilen meiner CSV-Datei importiert. Eine (nicht die erste) Spalte hat aber >100 Zeileneinträge.
Was muss ich ändern um die alle importiert zu bekommen?
Bin über Hilfe dankbar - wahrscheinlich ist es recht einfach... aber ich steh gerade auf dem Schlauch.
Danke schonmal!
VG Cora
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Range("A10:BM100").ClearContents 'Löscht Inhalt des angegebenen Bereichs, Formatierung bleibt  _
_
"Clear" statt "ClearContents" löscht auch Formatierung
Const cStrDelim As String = ";" 'Trennzeichen
Const cLngFirst As Long = 10 'erste zu beschreibende Zeile
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "P:\XXX\*.csv"  'Pfad anpassen
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cStrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, cLngFirst)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: CSV Import - nicht alle Zeilen werden importiert
10.02.2016 08:46:55
JoWE
Hallo Cora,
wie schaut Deine csv-Datei denn aus, kannst Du ein Beispiel zeigen?
Dein Code importiert mir alle Daten aus einer x-beliebigen csv-Datei.
Gruß
Jochen

AW: CSV Import - nicht alle Zeilen werden importiert
10.02.2016 10:36:36
Cora
Hallo Jochen,
danke fürs Testen.
Meine CSV-Datei hat, wenn ich sie händisch in Excel importiere, Spalten A bis BK. In Zeile 14 stehen Überschriften und darunter dann Werte, zB in Spalte A Einträge in 1 bis 20, in L jedoch 1 bis 100. Dazwischen auch immer wieder unterschiedlich viele Werte.
Ich werds nachher nochmal mit anderen CSV-Dateien testen.
VG
Cora

Anzeige
AW: Danke für die Rückmeldung und viel Erfolg!
10.02.2016 11:12:55
JoWE

AW: CSV Import - nicht alle Zeilen werden importiert
10.02.2016 12:08:38
Cora
Hallo Jochen,
danke fürs Testen.
Meine CSV-Datei hat, wenn ich sie händisch in Excel importiere, Spalten A bis BK. In Zeile 14 stehen Überschriften und darunter dann Werte, zB in Spalte A Einträge in 1 bis 20, in L jedoch 1 bis 100. Dazwischen auch immer wieder unterschiedlich viele Werte.
Ich werds nachher nochmal mit anderen CSV-Dateien testen.
VG
Cora
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

CSV-Import in Excel: So importierst du alle Zeilen


Schritt-für-Schritt-Anleitung

Um alle Zeilen einer CSV-Datei in Excel zu importieren, kannst du das folgende Makro verwenden. Achte darauf, dass du den Code in ein neues Modul in der VBA-Entwicklungsumgebung einfügst:

Sub Datei_Importieren()
    Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
    Range("A10:BM100").ClearContents 'Löscht Inhalt des angegebenen Bereichs, Formatierung bleibt
    Const cStrDelim As String = ";" 'Trennzeichen
    Const cLngFirst As Long = 10 'erste zu beschreibende Zeile

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Datei wählen"
        .InitialFileName = "P:\XXX\*.csv"  'Pfad anpassen
        If .Show = -1 Then
            strFileName = .SelectedItems(1)
        End If
    End With

    If strFileName <> "" Then
        Application.ScreenUpdating = False
        Open strFileName For Input As #1
        arrDaten = Split(Input(LOF(1), 1), vbCrLf)
        Close #1
        For lngR = 1 To UBound(arrDaten)
            arrTmp = Split(arrDaten(lngR), cStrDelim)
            If UBound(arrTmp) > -1 Then
                With ActiveSheet
                    lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                    lngLast = Application.Max(lngLast, cLngFirst)
                    .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
                    = Application.Transpose(Application.Transpose(arrTmp))
                End With
            End If
        Next lngR
    End If
End Sub

Du musst sicherstellen, dass der Pfad zur CSV-Datei korrekt ist und das Trennzeichen (;) deinem CSV-Format entspricht.


Häufige Fehler und Lösungen

  1. Fehler: Nur 16 Zeilen werden importiert

    • Lösung: Überprüfe, ob die CSV-Datei tatsächlich mehr als 16 Zeilen enthält. Stelle sicher, dass der Code die Zeilen korrekt liest und dass die Schleife alle Zeilen durchläuft.
  2. Fehler: CSV-Datei wird nicht gefunden

    • Lösung: Achte darauf, dass der Pfad zur CSV-Datei korrekt angegeben ist. Prüfe auch, ob die Datei im richtigen Format gespeichert wurde.
  3. Fehler: Daten erscheinen nicht in den erwarteten Spalten

    • Lösung: Überprüfe das Trennzeichen in deiner CSV-Datei. Es könnte sein, dass deine Datei ein anderes Trennzeichen verwendet (z.B. , oder |).

Alternative Methoden

Es gibt auch andere Möglichkeiten, CSV-Dateien in Excel zu importieren:

  • Manueller Import:

    1. Gehe zu Daten > Aus Text/CSV.
    2. Wähle die Datei aus und folge dem Assistenten, um die Daten zu importieren.
  • Power Query:

    • Mit Power Query kannst du CSV-Dateien noch flexibler importieren. Du kannst die Daten transformieren und bereinigen, bevor du sie in Excel lädst.

Praktische Beispiele

Nehmen wir an, du hast eine CSV-Datei mit den folgenden Inhalten:

Name;Alter;Stadt
Max;30;Berlin
Lisa;25;Hamburg
Tom;35;München

Wenn du das oben genannte Makro verwendest, werden alle Zeilen ab der 10. Zeile in Excel importiert. Achte darauf, dass die Spalten korrekt zugeordnet sind.


Tipps für Profis

  • Optimierung der Performance: Wenn du sehr große CSV-Dateien importierst, kann es hilfreich sein, die ScreenUpdating-Eigenschaft zu deaktivieren und erst am Ende wieder zu aktivieren.

  • Fehlerbehandlung: Füge im VBA-Code Fehlerbehandlungsroutinen hinzu, um mögliche Probleme beim Import zu identifizieren und entsprechende Maßnahmen zu ergreifen.

  • Datenvalidierung: Nachdem du die Daten importiert hast, kannst du Excel-Funktionen verwenden, um sicherzustellen, dass die Daten korrekt sind (z.B. Datenüberprüfung).


FAQ: Häufige Fragen

1. Wie kann ich das Trennzeichen ändern? Du kannst das Trennzeichen im Code anpassen, indem du die Konstante cStrDelim änderst.

2. Funktioniert das Makro in Excel 2016? Ja, das Makro sollte in Excel 2016 und neueren Versionen problemlos funktionieren.

3. Was kann ich tun, wenn die CSV-Datei sehr groß ist? Für große CSV-Dateien empfehle ich die Verwendung von Power Query, da es effizienter mit großen Datenmengen umgehen kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige