Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV Import mittel VBA scheitert am Komma

CSV Import mittel VBA scheitert am Komma
22.10.2014 20:28:03
Christian
Hallo zusammen,
bisher habe ich zu fast jedem Problem immer zügig Antworten hier gefunden, heute suche ich allerdings schon eine Weile und bin ratlos:
Ich habe eine CSV Datei, die ich mittels VBA importieren möchte.
Diese Datei hat als Trennzeichen das Semikolon.
In einigen Spalten stehen Beträge in der Form "110,00 €".
Wenn ich die Datei nun importiere, wird das Trennzeichen korrekt erkannt und auf den ersten Blick auch alles korrekt geladen.
Tatsächlich werden jedoch alle Zeichen, die hinter dem ersten Komma stehen, nicht eingelesen, als würde das Komme als Zeilenende interpretiert werden.
Folgende Einstellungen verwende ich derzeit:
For Each f In fso.GetFolder(CSVPFAD).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err 0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True ', Local:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next
Ich habe versucht, die Eigenschaft Local:=true hinzuzufügen.
Das führte dazu, dass die Leerzeichen als Trennzeichen erkannt werden (statt der Semikolons), was mir auch nicht hilft.
Die Einstellungen im Excel stehen auf Dezimaltrenner = Komma, Tausendertrenner = Punkt.
Diese Einstellungen so einzustellen, dass sich Excel dem Systemstandard bedient, helfen mir leider auch nicht.
Ich verwende Excel 2010.
Ich bin über jeden Ratschlag sehr dankbar!
Viele Grüße,
Christian

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: CSV Import mittel VBA scheitert am Komma
22.10.2014 20:37:45
Daniel
Hi
Probiere es mal mit Workbooks.Open (nicht OpenText) und dann mit dem Zusatz Local:=True
Gruß Daniel

AW: CSV Import mittel VBA scheitert am Komma
22.10.2014 20:55:42
Christian
Hallo Daniel,
das hatte ich auch schon probiert und es verhält sich genau so leider.
Wenn ich in der CSV alle Komma durch Punkte ersetze, dann läuft der Import.
Aber die Orginalfiles haben nun mal das Komma drin... :(
Danke dir dennoch!
Christian

Anzeige
AW: CSV Import mittel VBA scheitert am Komma
22.10.2014 21:01:49
Christian
Kommando zurück, es läuft nun!
Ich hatte die Option Local:=True an die falsche Stelle gehängt.
Danke!!
So läuft es nun:
For Each f In fso.GetFolder(CSVPFAD).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path, Local:=True
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err 0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True ', Local:=True
wbSource.Worksheets(1).Range("A:ZZ").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next

Anzeige
AW: CSV Import mittel VBA scheitert am Komma
22.10.2014 22:01:18
Daniel
Hi
Das mit dem TextToColumns solle Excel beim öffnen automatisch ausführen.
Außerdem öffne ich CSV-Dateien normalerweise mit .open und nicht .opentext.
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CSV-Import mit VBA: Probleme beim Komma lösen


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei mit einem Semikolon als Trennzeichen in Excel mithilfe von VBA zu importieren, kannst Du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. VBA-Editor öffnen: Drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub ImportCSV()
       Dim fso As Object
       Dim f As Object
       Dim wbSource As Workbook
       Dim ws As Worksheet
       Dim CSVPFAD As String
    
       CSVPFAD = "C:\Dein\Pfad\Zur\CSV\" ' Pfad zur CSV-Datei
       Set fso = CreateObject("Scripting.FileSystemObject")
    
       For Each f In fso.GetFolder(CSVPFAD).Files
           If LCase(Right(f.Name, 3)) = "csv" Then
               Workbooks.OpenText Filename:=f.Path, Local:=True
               Set wbSource = ActiveWorkbook
               Set ws = ThisWorkbook.Worksheets.Add
               ws.Name = f.Name
               wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=ws.Range("A1"), DataType:=xlDelimited, Semicolon:=True
               wbSource.Close False
           End If
       Next
    End Sub
  4. Pfad anpassen: Ändere den CSVPFAD im Code zu dem Speicherort Deiner CSV-Datei.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die CSV-Datei zu importieren.


Häufige Fehler und Lösungen

  1. Excel erkennt das Komma nicht: Stelle sicher, dass Du Local:=True beim Öffnen der CSV-Datei angibst. Dies hilft Excel, die regionalen Einstellungen zu berücksichtigen.

  2. Leerzeichen als Trennzeichen: Wenn Du die Option Local:=True falsch platzierst, werden möglicherweise Leerzeichen als Trennzeichen erkannt. Achte darauf, dass Local:=True beim Workbooks.OpenText-Befehl steht.

  3. Daten werden nicht korrekt angezeigt: Wenn die Zahlen mit einem Komma angezeigt werden, aber Excel sie nicht als Werte erkennt, kann es helfen, sie mit TextToColumns in das richtige Format zu bringen.


Alternative Methoden

  • Direktes Importieren ohne VBA: Du kannst die CSV-Datei auch direkt in Excel öffnen. Wähle Daten > Aus Text/CSV und folge den Anweisungen, um das richtige Trennzeichen auszuwählen.

  • Power Query: Nutze Power Query, um Daten aus CSV-Dateien zu importieren. Es bietet eine benutzerfreundliche Oberfläche und umfangreiche Anpassungsmöglichkeiten.


Praktische Beispiele

  • CSV-Datei mit Semikolon: Wenn Du eine CSV-Datei hast, die als Trennzeichen Semikolon verwendet, kannst Du den oben beschriebenen VBA-Code verwenden. Achte darauf, dass Du die richtigen Einstellungen für Dezimal- und Tausendertrennzeichen in Excel vornimmst.

  • CSV-Datei mit Punkt als Komma: Wenn Deine Daten im Format "110.00" vorliegen und Du sie als "110,00" importieren möchtest, kannst Du die Textformatierung in Excel nach dem Import anpassen.


Tipps für Profis

  • Automatisierung des Imports: Du kannst den Import von CSV-Dateien automatisieren, indem Du die oben genannten VBA-Skripte in regelmäßig ausgeführten Makros einsetzt oder die Aufgabenplanung von Windows verwendest.

  • Fehlerprotokollierung: Füge eine Fehlerbehandlungsroutine in Dein VBA-Skript ein, um Fehlermeldungen beim Import zu protokollieren. Dies hilft, Probleme schneller zu identifizieren.


FAQ: Häufige Fragen

1. Warum wird das Komma in meiner CSV-Datei nicht erkannt?
Das könnte an den regionalen Einstellungen in Excel liegen. Stelle sicher, dass Du Local:=True beim Import angibst, um die richtigen Trennzeichen zu verwenden.

2. Wie kann ich die Trennzeichen in meiner CSV-Datei ändern?
Du kannst die CSV-Datei in einem Texteditor öffnen und alle Semikolons durch Kommas ersetzen oder umgekehrt, je nachdem, welches Format Du benötigst.

3. Funktioniert dieser Import auch in neueren Excel-Versionen?
Ja, die beschriebenen Methoden funktionieren in Excel 2010 und neueren Versionen. Achte darauf, dass Du die VBA-Referenzen entsprechend anpasst.

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