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

CSVDatei per ADO einlesen; Werte in Anführungsz.

Forumthread: CSVDatei per ADO einlesen; Werte in Anführungsz.

CSVDatei per ADO einlesen; Werte in Anführungsz.
26.03.2008 16:32:00
Arthur
Hallo.
Eine kleine Frage für den, der die Antwort weiß. Eine große Antwort für mich.
Ich möchte eine Datei per ADO-Verbindung einlesen. Im Prinzip funktioniert das. Jetzt bekomme ich aber eine Datei vorgelegt, in der die Werte in Anführungszeichen stehen. Und damit finde ich im Recordset nur noch die erste Spalte.
Eine Beispielzeile des Dateiinhalts:
"Hello","1","0"
Was läuft anders, wenn Werte in Anführungszeichen stehen? Ein direkter Import über den manuellen Excel Datenimport funktioniert.
Hier kommt noch etwsa Code, wie die Verbindung erstellt wird.
Set loAdoConnection = CreateObject("ADODB.CONNECTION")
loAdoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0" _
& ";Data Source=""C:\Temp\""" _
& ";Extended Properties=""text;HDR=No;FMT=Delimited"""
loAdoRecordset.Open "Select * from Datei.txt", loAdoConnection, 3, 1, 1
Dank schon mal für eine Antwort.
Gruß
Arthur

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSVDatei per ADO einlesen; Werte in Anführungs
26.03.2008 18:20:22
Ramses
Hallo
Vermutlich versteht ADODB die Kommas nicht, sondern erwartet ";"
Probier mal
"FMT=Delimited(,)" oder alternativ "FMT=CustomDelimited(,) "
Hier noch zwei interessante Links
http://www.thescripts.com/forum/thread58058.html
http://msdn2.microsoft.com/en-us/library/ms709353.aspx
Der zweite Link ist für die "Schema.ini" weil der Link auf MS im ersten Link fehlerhaft ist
Gruss Rainer

Anzeige
Problem gefunden
27.03.2008 11:28:19
Arthur
Hallo Rainer.
Deine Links hatten die Lösung zwar nicht direkt in petto. Durch das Herumtesten mit den Schema-Files kam aber irgendwann der Anstoss zur Lösung in Form einer ansonsten nicht angezeigten Fehlermeldung.
DIE LÖSUNG, für die, die es interessiert:
Um CSV-Dateien einzulesen, die komma getrennte Werte enthält müssen die Parameter entsprechend gesetzt sein. Zu dem Parameter "Format=Delimited(,)" fehlt ein zweiter Parameter. Ansonsten sähe das Feldtrennzeichen aus, wie das Dezimaltrennzeichen. Da meckert aber niemand drüber, wenn die Verbindung im Code und ohne Schema-Datei geöffnet wird.
Kurz und gut, der Parameter "Format=Delimited(,);DecimalSymbol=." führt zum Erfolg.
Best regards und bedankt für den Schubs in die richtige Richtung.
-Arthur

Anzeige
.... doch nicht *grpf*
27.03.2008 13:06:00
Arthur
Sorry,
Irgendwie hatte es funktioniert. Doch dann das Schreckliche: Excel-Datei neu geladen und nun wird wieder nur die erste Spalte eingelesen. ... vieleicht zu viel herumprobiert.
Sind die Parameterangaben, die ich übergebe doch falsch? Vermutlich. Wie sehen die aber richtig aus? Weder FMT, noch Format bringt eine geänderte Reaktion.
Hier habe ich eine kleine Testdatei für den ADO-Zugriff erstellt. Die Csv kann leicht über das Beispiel erstellt werden. Als Ergebnis müssten dann die sieben Spalten erkannt werden.
https://www.herber.de/bbs/user/51072.xls
Weiß mir jemand einen Rat?
-Arthur

Anzeige
Zusatzinfo
27.03.2008 13:29:00
Arthur
... ich glaube mich mit mir selbst zu unterhalten ... und das scheinbar gerne ;0)
Feststellung: Bei der ganzen Testerei habe ich wohl die Schema.ini irgendwann geändert. Die folgenden Einträge wären richtig und funktionieren. Der Dateiname muss jedenfalls vorhanden sein. Jedoch reagiert der Open-Befehl auf keine anderen Parameter:
[AdoTest.csv]
ColNameHeader=False
DecimalSymbol=(.)
Format=Delimited(,)
CharacterSet=ANSI
Kennt jemand die Angaben, die gemacht werden müssen, um die selben Parameter im Open-Befehl zu übergeben?
"Format=CSVDelimited; ..." oder "FMT=CSVDelimited; ..." hilft bei jedenfalls nicht. Eventuell ist auch nur die Syntag falsch. Wer weiß?
-Arthur

Anzeige
AW: Zusatzinfo
27.03.2008 19:09:00
Tino
Hallo,
bevor du dir das Leben mit ADODB.CONNECTION holst.
Mach es über
Daten importieren
und schon bist du alle sorgen los.
Gruß
Tino
Anzeige

Infobox / Tutorial

CSV-Datei per ADO einlesen: Werte in Anführungszeichen behandeln


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit Werten in Anführungszeichen per ADO einzulesen, folge diesen Schritten:

  1. ADO-Verbindung einrichten: Stelle zunächst sicher, dass du eine ADO-Verbindung korrekt einrichtest. Hier ein Beispiel:

    Dim loAdoConnection As Object
    Set loAdoConnection = CreateObject("ADODB.Connection")
    loAdoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=""C:\Temp\"";" & _
    "Extended Properties=""text;HDR=No;FMT=Delimited(,)"";"
  2. CSV-Datei importieren: Verwende das Recordset, um die Daten aus deiner CSV-Datei zu lesen:

    Dim loAdoRecordset As Object
    Set loAdoRecordset = CreateObject("ADODB.Recordset")
    loAdoRecordset.Open "SELECT * FROM Datei.txt", loAdoConnection, 3, 1, 1
  3. Parameter anpassen: Wenn deine CSV-Datei Werte in Anführungszeichen enthält, musst du sicherstellen, dass die Parameter für das Einlesen korrekt gesetzt sind. Beispiel:

    • Verwende Format=Delimited(,);DecimalSymbol=. um sicherzustellen, dass die Werte richtig interpretiert werden.

Häufige Fehler und Lösungen

Einige häufige Fehler, die beim Einlesen von CSV-Dateien mit ADO auftreten können, sind:

  • Nur erste Spalte wird gelesen: Dies kann passieren, wenn die Trennzeichen nicht korrekt erkannt werden. Stelle sicher, dass du FMT=Delimited(,) oder FMT=CustomDelimited(,) verwendest.

  • Schema.ini nicht korrekt: Wenn du eine Schema.ini-Datei verwendest, stelle sicher, dass die Einträge korrekt sind. Ein Beispiel für eine funktionierende Schema.ini wäre:

    [AdoTest.csv]
    ColNameHeader=False
    DecimalSymbol=(.)
    Format=Delimited(,)
    CharacterSet=ANSI

Alternative Methoden

Wenn du Schwierigkeiten mit ADO hast, kannst du auch andere Methoden zum Importieren von CSV-Dateien in Excel verwenden:

  • Manueller Import: Gehe zu Daten -> Daten importieren und wähle die CSV-Datei aus. Dies umgeht viele der Probleme, die mit ADO verbunden sind.

  • VBA für den Import: Du kannst auch VBA-Skripte verwenden, um CSV-Dateien zu importieren, ohne ADO zu nutzen. Beispiel:

    Workbooks.Open Filename:="C:\Temp\Datei.csv"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du ADO mit CSV-Dateien verwenden kannst:

  1. Einlesen einer einfachen CSV-Datei:

    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM [AdoTest.csv]", loAdoConnection
  2. Bearbeiten von Daten nach dem Import:

    Nach dem Einlesen der Daten kannst du sie in Excel weiterverarbeiten, z.B. durch Schleifen über die Recordset-Daten.


Tipps für Profis

  • Verwende Schema.ini: Wenn du häufig mit CSV-Dateien arbeitest, kann eine gut konfigurierte Schema.ini-Datei viel Zeit sparen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinem VBA-Code, um Probleme beim Import frühzeitig zu erkennen.
  • Testen mit kleinen Dateien: Teste deine ADO-Implementierungen zunächst mit kleinen CSV-Dateien, um sicherzustellen, dass alle Parameter korrekt gesetzt sind.

FAQ: Häufige Fragen

1. Was ist ADO? ADO (ActiveX Data Objects) ist eine Microsoft-Technologie, die es ermöglicht, Daten aus verschiedenen Quellen zu lesen und zu bearbeiten.

2. Warum kann ich nur die erste Spalte sehen? Das liegt oft daran, dass die Trennzeichen in der CSV-Datei nicht korrekt erkannt werden. Stelle sicher, dass du die richtigen Parameter in deiner ADO-Verbindung verwendest.

3. Welche Excel-Version benötige ich für die Nutzung von ADO? ADO ist in den meisten modernen Excel-Versionen verfügbar, jedoch kann die genaue Implementierung und die benötigten Provider von der verwendeten Excel-Version abhängen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige