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

Forumthread: VBA: CSV Import mit Dezimaltrennzeichen(,)

VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 10:08:53
Hans
Hallo Zusammen,
ich habe folgendes Problem:
Ich importiere eine CSV Datei in ein Excel Dokument. Die CSV Datei enthält unter anderem Dezimalzahlen. Nach dem die CSV Datei eingelesen wurde werden im Excel Dokument die Dezimalzahlen mit einem . (Punkt) anstatt eines , (Kommas) aufgeführt.
Mein folgender Code für den Import:
Set Daten = Workbooks.Open("Pfad/Daten_" & Format(Daten, "m") - 1 & ".xlsx")
Open "Pfad/Daten1_" & Format(Daten, "m") - 1 & ".csv" For Input As #1
i = 1
Do Until EOF(1)
Line Input #1, Zeile
T = Split(Zeile, ";")
For k = 0 To UBound(T)
AE_Daten.Sheets(1).Cells(i, k + 1).Value = T(k)
Next k
i = i + 1
Loop
Close #1

Über Eure Hilfe würde ich mich sehr freuen!
Viele Grüße

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 10:14:40
Sepp
Hallo Hans,
über den Import von csv-Dateien wurde schon viel geschrieben.
Warum liest du die Datei nicht direkt über Daten > aus Text ein?
Viel hängt beim Import von csv's vom Aufbau derselben ab, lade evtl. eine Beispieldatei hoch. (vorher in .txt umbenennen, weil der Upload von .csv nicht möglich ist)
Gruß Sepp

Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 10:19:50
ede
Hallo Hans,
falls der "." immer in ein "," umgesetzt werden soll, dann so:
AE_Daten.Sheets(1).Cells(i, k + 1).Value = Replace(T(k), ".", ",", 1)
gruss

AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 11:00:51
Hans
https://www.herber.de/bbs/user/99334.txt
Hallo,
vielen Dank für Eure Hilfe.
Ich hatte mich zu unpräzise ausgedrückt, es sollen nur die "." in den Dezimalzahlen ersetzt werden. Wichtig ist das bei einer Zahl von 1.189.18 nur der letzte Punkte als "," ersetzt wird.
Ich hoffe Ihr könnt mir helfen.
Viele Grüße

Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 11:12:07
ede
Hallo noch mal,
deine txt-Beispieldatei hat leider falschen Inhalt. Bitte neu abstellen mit ruhig mehr Beispielen...
Gruss

AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 13:37:37
Sepp
Hallo Hans,
deine Datei lässt sich Problemlos per > Daten > Aus Text importieren. Einfach dem Assistenten folgen. das lässt sich auch in ein Makro einbauen.
Gruß Sepp

Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 14:07:25
Hans
vielen Dank für Eure bisherige Hilfe.
Habt ihr eine Idee oder besteht überhaupt die Möglichkeit das in meinen bestehenden Code einzubauen?
Bin für jede Hilfe dankbar!

AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
05.08.2015 15:53:58
Sepp
Hallo Han,
dafür gibt es den Rekorder!
Bezogen auf deinen Code z. B. so.
With AE_Daten.Sheets(1).QueryTables.Add(Connection:="TEXT;" & _
    "Pfad/Daten1_" & Format(Daten, "m") - 1 & ".csv", Destination:=Range("$A$1"))
  .Name = "import"
  .FieldNames = True
  .RowNumbers = False
  .FillAdjacentFormulas = False
  .PreserveFormatting = True
  .RefreshOnFileOpen = False
  .RefreshStyle = xlInsertDeleteCells
  .SavePassword = False
  .SaveData = True
  .AdjustColumnWidth = True
  .RefreshPeriod = 0
  .TextFilePromptOnRefresh = False
  .TextFilePlatform = 1252
  .TextFileStartRow = 1
  .TextFileParseType = xlDelimited
  .TextFileTextQualifier = xlTextQualifierDoubleQuote
  .TextFileConsecutiveDelimiter = False
  .TextFileTabDelimiter = True
  .TextFileSemicolonDelimiter = True
  .TextFileCommaDelimiter = False
  .TextFileSpaceDelimiter = False
  .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
  .TextFileTrailingMinusNumbers = True
  .Refresh BackgroundQuery:=False
End With

Gruß Sepp

Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
06.08.2015 09:50:43
Hans
Hallo Sepp,
ich habe deinen Vorschlag versucht umzusetzen, leider erhalte ich immer folgende Fehlermeldung: "Anwendungs- oder objektdefinierter Fehler"
Ich hoffe ihr könnt mir helfen! Unten stehend mein Code.
Set AE_Daten = Workbooks.Open("L:\Reporting\AEDaten_" & Format(Date, "m") - 1 & ".xlsx")
With AE_Daten.Sheets(1).QueryTables.Add(Connection:="TEXT;" & _
"L:\Reporting\Daten1_" & Format(Date, "m") - 1 & ".csv", Destination:=AE_Daten.Sheets(1).Range(" _
$A1$"))
.Name = "Daten1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

Anzeige
AW: VBA: CSV Import mit Dezimaltrennzeichen(,)
06.08.2015 09:56:08
Sepp
Hallo Hans,
Set AE_Daten = Workbooks.Open("L:\Reporting\AEDaten_" & Format(Date, "m") - 1 & ".xlsx")
With AE_Daten.Sheets(1).QueryTables.Add(Connection:="TEXT;" & _
    "L:\Reporting\Daten1_" & Format(Date, "m") - 1 & ".csv", Destination:=.Range("$A1$"))
  .Name = "Daten1"
  .FieldNames = True
  .RowNumbers = False
  .FillAdjacentFormulas = False
  .PreserveFormatting = True
  .RefreshOnFileOpen = False
  .RefreshStyle = xlInsertDeleteCells
  .SavePassword = False
  .SaveData = True
  .AdjustColumnWidth = True
  .RefreshPeriod = 0
  .TextFilePromptOnRefresh = False
  .TextFilePlatform = 1252
  .TextFileStartRow = 1
  .TextFileParseType = xlDelimited
  .TextFileTextQualifier = xlTextQualifierDoubleQuote
  .TextFileConsecutiveDelimiter = False
  .TextFileTabDelimiter = True
  .TextFileSemicolonDelimiter = True
  .TextFileCommaDelimiter = False
  .TextFileSpaceDelimiter = False
  .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
  .TextFileTrailingMinusNumbers = True
  .Refresh BackgroundQuery:=False
End With

Gruß Sepp

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

CSV Import in Excel mit Dezimaltrennzeichen ändern


Schritt-für-Schritt-Anleitung

Um eine CSV-Datei in Excel zu importieren und dabei das Dezimaltrennzeichen von Punkt (.) auf Komma (,) zu ändern, kannst du den folgenden VBA-Code verwenden:

Sub ImportCSV()
    Dim AE_Daten As Workbook
    Dim Zeile As String
    Dim T() As String
    Dim i As Integer, k As Integer
    Dim Daten As Date
    Daten = Date

    Set AE_Daten = Workbooks.Open("Pfad/AEDaten_" & Format(Daten, "m") - 1 & ".xlsx")
    Open "Pfad/Daten1_" & Format(Daten, "m") - 1 & ".csv" For Input As #1
    i = 1
    Do Until EOF(1)
        Line Input #1, Zeile
        T = Split(Zeile, ";")
        For k = 0 To UBound(T)
            ' Punkt durch Komma ersetzen
            AE_Daten.Sheets(1).Cells(i, k + 1).Value = Replace(T(k), ".", ",")
        Next k
        i = i + 1
    Loop
    Close #1
End Sub

Stelle sicher, dass du den Pfad zu deiner CSV-Datei und der Excel-Datei anpasst.


Häufige Fehler und Lösungen

  1. Fehler: "Anwendungs- oder objektdefinierter Fehler"

    • Überprüfe den Pfad zu deiner Datei. Stelle sicher, dass der Pfad korrekt ist und die Datei existiert.
  2. Fehler: Dezimalzahlen werden nicht korrekt angezeigt

    • Achte darauf, dass du die richtige Formatierung in deiner Excel-Datei verwendest. Gehe zu "Zellen formatieren" und wähle das richtige Zahlenformat.

Alternative Methoden

Eine einfache Methode, um CSV-Dateien in Excel zu importieren, besteht darin, den integrierten Import-Assistenten zu verwenden:

  1. Gehe zu Daten > Aus Text/CSV.
  2. Wähle deine CSV-Datei aus und klicke auf Importieren.
  3. Im Import-Assistenten kannst du das Dezimaltrennzeichen anpassen. Wähle die entsprechenden Optionen und klicke auf Laden.

Praktische Beispiele

  • Import einer CSV-Datei mit Dezimaltrennzeichen ändern: Du kannst den oben angegebenen VBA-Code verwenden, um eine spezifische CSV-Datei zu importieren und dabei das Dezimaltrennzeichen zu ändern.

  • CSV-Datei in Access importieren: Um eine CSV-Datei in Access zu importieren, gehe zu Externe Daten > Textdatei und folge dem Assistenten.


Tipps für Profis

  • Verwende den Rekorder in Excel, um deinen Importprozess zu automatisieren. So kannst du dein Makro einfacher erstellen und anpassen.
  • Wenn du regelmäßig CSV-Dateien importierst, erwäge die Verwendung einer benutzerdefinierten Funktion oder eines Add-Ins, das den Importprozess optimiert.
  • Achte darauf, die Einstellungen für die Region in Excel zu überprüfen, um sicherzustellen, dass die Dezimaltrennzeichen korrekt erkannt werden.

FAQ: Häufige Fragen

1. Wie kann ich das Dezimaltrennzeichen für eine Datei in Excel ändern? Du kannst das Dezimaltrennzeichen in den Excel-Optionen unter "Erweitert" anpassen oder den Replace-Befehl im VBA-Code verwenden.

2. Ist es möglich, eine CSV-Datei in Excel mit einem bestimmten Trennzeichen zu importieren? Ja, du kannst im Import-Assistenten das gewünschte Trennzeichen (z. B. Semikolon oder Komma) auswählen, wenn du eine CSV-Datei importierst.

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