AW: CSV-Import Dezimalzahlen
25.07.2020 10:38:43
fcs
Hallo Robin,
deine CSV-Datei ist scheinbar keine lupenreine CSV (. = Dezimaltrennzeichen - , = Spaltentrennzeichen)
Probiere mal vor dem Öffnen der CSV-Dateien die Excel-Option für das Dezimaltrennzeichen auf "." zu setzten, nach dem Import wieder zurückändern.
LG
Franz
Beispiel-Makro:
Sub Import_CSV()
' Import_CSV Makro
Dim varDatei As Variant
Dim wkbCSV As Workbook
Dim wksCSV As Worksheet
Dim wksZiel As Worksheet
Dim Zei_Z As Long, zei_L As Long, zeiStart As Long
Set wksZiel = ActiveWorkbook.Worksheets("CSV_Daten") 'Zieltabelle für Einfügen der CSV-Daten
'Excel-Dezimalzeichen vor dem Öffnen der CSV-Datei auf "." setzen
With Application
.DecimalSeparator = "."
.UseSystemSeparators = False
End With
'Startzeilen für Kopieren und Einfügen setzen
With wksZiel
If .Range("A1").Text = "" Then 'Blatt ist leer
zeiStart = 1 'bei 1. Datei ab Zeile 1 kopieren
Zei_Z = 1 '1. Einfügezeile
Else
zeiStart = 2
Zei_Z = .UsedRange.Row + .UsedRange.Rows.Count 'nächste freie Zeile
End If
End With
'CSV-Datei(en) auswählen und abarbeiten
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte zu importierende CSV-Datei(en) auswählen - Mehrfachauswahl ist möglich"
.FilterIndex = 6 'CSV-, TXT-Dateien
If .Show = -1 Then
For Each varDatei In .SelectedItems
Set wkbCSV = Workbooks.Open(Filename:="CSV_DatenStandrd_USA.csv", ReadOnly:=True)
Set wksCSV = wkbCSV.Sheets(1)
With wksCSV
zei_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
.Range(.Rows(zeiStart), .Rows(zei_L)).Copy wksZiel.Cells(Zei_Z, 1)
End With
'nächste Einfügezeile
Zei_Z = Zei_Z + zei_L - zeiStart + 1
If zeiStart = 1 Then zeiStart = 2 'bei allen weiteren Daten ab Zeile 2
wkbCSV.Close savechanges:=False
Next
End If
End With
'Dezimalzeichen auf Systemeinstellungen zurücksetzen
Application.UseSystemSeparators = True
End Sub