Office: CSV Datei einlesen

Helfe beim Thema CSV Datei einlesen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Gemeinde, ich habe ein Problem und hoffe auf Hilfe, da ich nicht mehr weiter komme. Ich habe eine kommaseparierte CSV-Datei im UTF-8 Format.... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Frank-HRO, 22. Oktober 2019.

  1. CSV Datei einlesen


    Hallo Gemeinde,

    ich habe ein Problem und hoffe auf Hilfe, da ich nicht mehr weiter komme.

    Ich habe eine kommaseparierte CSV-Datei im UTF-8 Format.
    Als Besonderheit ist anzumerken, dass wenn in einer Informationseinheit ein Komma steht, der Inhalt in Anführungszeichen geschrieben steht.

    Ich habe mir Code zusammengesucht, der die Umwandlung von Sonderzeichen richtig einliest.

    Nur leider gibt es Probleme, wenn in einer "Zelle" das Komma mit enthalten ist:

    Beispielinhalt 1. Datensatz in der csv-Datei:
    "P05","P05 Härte, Höhe, Maß steuern und kontrollieren",,,,,,,,,,,,,1.00000,,,,,,,,

    Ich möchte, dass beim Einlesen folgendes in den Zellen eingelesen wird:
    A1: P05
    B1: P05 Härte, Höhe, Maß steuern und kontrollieren
    C1: >leer<
    D1: >leer<
    usw.

    Was muss ich an meinem Code ändern, damit das funktioniert?

    Ich schaffe es nicht, den Text mit den Kommas in B1 zu schreiben, weil dort selber ein oder mehrere Kommas enthalten sind.
    Die Funktion Split wird wohl nicht verwendbar sein. Hier liegt mein Hauptproblem.

    Die Anführungszeichen bekomme ich mit zwei If Anweisungen (Länge des Strings größer Null und erstes Zeichen ist ein ") weg. Oder geht es eleganter?

    Code:
     
    Frank-HRO, 22. Oktober 2019
    #1
  2. Hallo,

    ein kleiner Test mit

    - Menü "Daten"
    - Schrift Windows
    - Trennzeichen Komma
    - TExtqualifier "

    sah gut aus

    mfg
     
    Fennek11, 24. Oktober 2019
    #2
  3. Hallo Fennek11,

    sorry ich kann deine Antwort nicht ganz nachvollziehen.

    Kannst du bitte etwas ausführlicher antworten?

    PS: Ich benötige es als VBA-Code.


    Danke und Gruß

    Frank
     
    Frank-HRO, 24. Oktober 2019
    #3
  4. CSV Datei einlesen

    Hallo Frank,

    für den Test nutzte ich xl2016, da ist PQ integriert.

    Excel ist seit vielen Jahre auf utf-8 umgestellt, VBA aber nicht. VBA kann utf-8 mit ADO oder einer API bearbeiten, wie dies aber zusammen mit den Trennzeichen "," aber nur ausserhalb der Strings gehen soll, ist mir nicht klar.

    Nach dem (für mich) gelungenen Test werde ich dieses Thema nicht weiter verfolgen.

    mfg
     
    Fennek11, 24. Oktober 2019
    #4
  5. Danke Fennek11,

    vielleicht hilft mir ja ein anderer aus dem Forum.

    Gruß Frank
     
    Frank-HRO, 24. Oktober 2019
    #5
  6. Ich glaube, dass du ein Forum als Gelegenheit siehst, dass deine Arbeit von anderen für 0,00€ gemacht wird.

    Ein Form sollte Hilfe zur Selbsthilfe bieten und wenn du eine (gehörige) Portion an Eigenleistung erbracht hast, dann helfen wir bestimmt gerne weiter, wenn es hier oder da einmal hakt ... Und ja, ich habe den Code im Eingangsbeitrag gesehen.

    Wenn ich etwas benötige gehe ich in den Laden oder zum Dienstleister und bezahle dann den Gegenwert. Natürlich kann ich auch ab und zu zu meiner Autowerkstatt gehen und mir einen Gratis-Tipp holen, wie ich hier oder da weiter komme. Aber die werden mir auch (sinnvollwerweise) oft einen sinnvolleren Weg aufzeigen, der zukunftsweisender ist.
    Ohne Gruß
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Drogist, 24. Oktober 2019
    #6
  7. Klar, wie dann auch einfacher und schneller.

    Import alles auf einmal, per Power Query, SQL, Excel-Textimport. Massendatenverarbeitung statt mit Einzelwerten rumzujonglieren, die man dann nicht zu fassen bekommt. Bei gescheiten Methoden kann man dann festlegen, welche Trennzeichen, welche Codepage, ob Textqualifier usw. zu verwenden sind, damit die Tabelle richtig gelesen wird.

    Warum? Wirst Du erst ab Codezeilenzahl 87 bezahlt?
    Oder würde der Anstoß einer Aktion mit einer einzelnen VBA-Anweisung auch schon als VBA-Code akzeptiert?
     
  8. CSV Datei einlesen

    \@ Drogist und ebs17,

    ich benötige den VBA-Code für mich und für die Umsetzung meines Projektes.

    Damit war und ist keine Forderung meinerseits verbunden, hier eine fertige Lösung für lau zu bekommen.

    Statt dem Rumreiten auf einer Bezahlung würde ein Tipp zur Änderung der eingesetzten Split-Funktion mir echt weiter helfen.

    Gruß Frank
     
    Frank-HRO, 24. Oktober 2019
    #8
  9. Hi Frank,

    'hier wird zeilenweise eingelesen und je Komma gesplittet; wie Du weisst
    arrayOfElements = Split(line, ",")

    'erstes Element ausgeben
    Msgbox Split(line, ",") (0)

    'n-tes Element ausgeben
    Msgbox Split(line, ",") (n)

    'schleife verwenden; 1D-Array
    Dim x as long
    'vom ersten bis zu letzten Element
    For x = LBound(arrayOfElements) to UBound(arrayOfElements)
    Debug.Print arrayOfElements(x)
    Next x
     
  10. Split verwendet nur jeweils einen Trenner, und den konsequent über den gesamten zugewiesenen String. Also kannst Du in Deiner Konstellation entweder das Komma oder aber Komma umgeben von Anführungsstrichen als Trenner einsetzen, aber eben keine praktikable Kombination. Das hast Du schon bemerkt.

    Also: Streiche das Split und gehe in der Zeile zeichenweise vor (Schleife über Mid). Dann kann man durch das Auftreten der genannten Zeichen logische Aktionen ableiten. Ganz simpel ist das nicht, liegt aber in der von Dir gewünschten Richtung.

    Es ist ein Zeichen von Genialität, schwierige Dinge einfach zu machen. Oder anders rum.
     
  11. Die von Fennek vorgeschlagene Vorgehensweise mit den excelinternen Importfunktionen ist doch auch per VBA steuerbar (ggf. mit Makrorekorder aufzeichnen). Scheidet das auch aus?
     
    EarlFred, 24. Oktober 2019
    #11
  12. Andere Idee:
    1) Split der eingelesenen Zeile mit Trenner Anführungszeichen
    2) Schleife über alle Elemente: wenn nicht =, dann ersetze , durch @@@
    3) Join mit Anführungszeichen als Trenner
    4) Anführungszeichen ersetzen durch nichts
    5) Split mit Komma als Trenner
    6) nochmal Schleife über alle Elemente und ersetze @@@ durch ,
    Weiter wie in deinem Code
     
    EarlFred, 24. Oktober 2019
    #12
  13. CSV Datei einlesen

    So, Frank:
    Jetzt sind es doch einige Tipps geworden *Smilie
     
  14. \@all,

    vielen Dank für die vielen Tipps.

    Ich bin mir sicher, dass ich damit etwas anfangen kann. Werde mich damit am Wochenende beschäftigen und die Tipps zur Split-Funktion umsetzen.

    Die 2 If-Anweisungen habe ich mit s = Replace(s, Chr(34), "") schon elegant vereinfacht.

    Nochmals danke.

    Gruß Frank
     
    Frank-HRO, 25. Oktober 2019
    #14
  15. Hallo,

    man kann auch an den Kommas splitten und dann jedes Array Element auf ein Anführungszeichen prüfen. Wird das erste gefunden, setzt man eine Prüfvariable vom Typ Boolean auf True. jedes weitere Element wird in die gleiche Zelle geschrieben. Wird das nächste Element mit Anführungszeichen gefunden, wird es ebenfalls noch in die gleiche Zelle geschrieben und die Prüfvariable wird auf False gesetzt. Die durch Split() weggefallenen Kommas müssen an den entsprechenden Stellen wieder eingefügt werden.

    In einer Schleife und mit InStr() sollte das funktionieren. Sollte es im zu schreibenden Text auch noch Anführungszeichen geben, muss man das Vorgehen mit Left() und Right() etwas aufbohren. Das geht allerdings schief, wenn man auf eine direkte Kombination von Anführungszeichen und Komma trifft und beide Zeichen gehören zum Text, den man braucht.

    Kann man sich allerdings auch alles sparen, wenn man Fenneks Methode nimmt.

    Viele Grüße,

    Zwenn
     
Thema:

CSV Datei einlesen

Die Seite wird geladen...
  1. CSV Datei einlesen - Similar Threads - CSV Datei einlesen

  2. Farbspeicherung in CSV-Datei

    in Microsoft Excel Hilfe
    Farbspeicherung in CSV-Datei: Hallo, gerade versuche ich meinen Kontoauszug im CSV-Format für den Steuerberater vorzubereiten und unterschiedliche Zeilen verschieden einzufärben. Das gelingt unproblematisch. Aber das Ganze...
  3. CSV Dateien mit unterschiedlichen Format importieren und zusammenführen

    in Microsoft Access Hilfe
    CSV Dateien mit unterschiedlichen Format importieren und zusammenführen: Guten Morgen, ich versuche inzwischen seit einiger Zeit einige CSV aus verschiedenen Quellen zusammenzuführen. Sämtliche Recherchen über Google etc. haben mich leider zu keiner Lösung geführt und...
  4. Variabler Dateipfad bei Einlesen von csv-Datei

    in Microsoft Excel Hilfe
    Variabler Dateipfad bei Einlesen von csv-Datei: Hallo zusammen, ich habe einen Code mit dem Makro-Rekorder aufgenommen den ich gerne anpassen würde: Sub AddData() ActiveWorkbook.Queries.Add Name:="TWW", Formula:= _ "let" & Chr(13) & "" &...
  5. csv-Datei in Datenbank-Tabelle einlesen

    in Microsoft Access Hilfe
    csv-Datei in Datenbank-Tabelle einlesen: Hallo Forum, ich möchte eine csv-Datei in eine definierte Access-Tabelle per VBA einlesen. csv-Datei: • Dateiformat: csv • Dateiursprung: Unicode (UTF-8) • Trennzeichen: Komma •...
  6. CSV-Datei über VBA einlesen und über eine Tabelle ausgeben

    in Microsoft Access Hilfe
    CSV-Datei über VBA einlesen und über eine Tabelle ausgeben: hallo, hier seht ihr meinen Code. Ich möchte eine CSV-Datei per Befehl von einem button einlesen und in eine Tabelle schreiben. Die Tabelle soll so aussehen: Spieler, Runde1, Runde2, Runde3,...
  7. Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen

    in Microsoft Access Hilfe
    Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen: hallo, ich möchte eine Csv-Datei per VBA in eine Access Tabelle einfügen. Die Csv-Datei besteht aus Runden und Streckenzeiten. Das sind die Werte die in der Csv-Datei stehen ( hier nur ein...
  8. CSV Datei mit VBA einlesen. Semikolon getrennt?

    in Microsoft Excel Hilfe
    CSV Datei mit VBA einlesen. Semikolon getrennt?: Hallo, ich möchte eine CSV Datei mit einem Makro Öffnen. Wenn ich den Vorgang aufzeichen sieht der Code so aus: Workbooks.Open Filename:= _ "C:\Dokumente und...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden