Hallo zusammen,
ich habe mir folgenden Code "gebastelt", der mir effektiv
1. eine *.csv-Datei einliest
2. diese so formatiert, dass mehrere Spalten entstehen (anstatt zuvor durch Komma getrennt in einer Spalte)
3. das Ganze in eine Datei "eingelesen.xls" im selben Dateipfad kopiert.
Das klappt alles soweit. Jetzt habe ich aber das Problem, dass die einzulesenden *.csv-Dateien Spalten im Format "12.123" hat.
Mit meinem aktuellen Code wandelt Excel (vermutlich wegen der Formatierung "Standard" und nicht "Text") das ganze in eine unbrauchbare Zahl um.
Leider komme ich überhaupt nicht weiter, wie ich das lösen soll.
Mögliche Lösungsansätze meinerseits (die ich leider mit meinem VBA-Wissen nicht schaffe umzusetzen):
- ausgewählte *.csv-Datei zunächst so formatieren, dass alle "," = ";" und "." = ","
- generierte *.txt-Datei so formatieren, dass alle "," = ";" und "." = "," (wäre für mich vermutlich besser)
Sub einlesen()
Dim wb As Workbook, wks As Worksheet, wbAktiv As Workbook, wksAktiv As Worksheet
Dim rngZelle As Range
Dim strVerzeichnis As String
Dim Dateiname As Variant, DateinameTXT As String
ChDrive "E"
ChDir "E:\...\simu26"
Dateiname = Application.GetOpenFilename(fileFilter:="CSV (*.csv), *.csv")
If Dateiname = False Then Exit Sub
strVerzeichnis = VBA.CurDir
Set wbAktiv = ActiveWorkbook
Set wksAktiv = ActiveSheet
Set rngZelle = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Application.ScreenUpdating = False
VBA.FileCopy Source:=Dateiname, Destination:=Left(Dateiname, Len(Dateiname) - 3) & "txt" _
DateinameTXT = Left(Dateiname, Len(Dateiname) - 3) & "txt"
Application.Workbooks.OpenText Filename:=DateinameTXT, Origin:=xlWindows, _
StartRow:=1, _
DataType:=xlDelimited, ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=False, _
Comma:=True, _
Space:=False, _
Other:=False
Set wb = ActiveWorkbook
wb.Sheets(1).UsedRange.Copy
rngZelle.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set rngZelle = rngZelle.Offset(wb.Sheets(1).UsedRange.Rows.Count, 0)
wb.Close savechanges:=False
VBA.Kill (DateinameTXT)
Application.ScreenUpdating = True
ActiveSheet.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="E:\...\simu26\eingelesen", FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
Application.DisplayAlerts = False
Application.Quit
End Sub
Ich wäre euch wirklich sehr dankbar, wenn ihr mir helfen könntet!
LG Marcel