ich bin total am verzweifeln. Mache schon seit 2 Tagen am VBA Code herum und bekomme keine Lösung. Vlt. könnt ihr mir dabei helfen:
Per VBA importiere ich die CSV/TXT Datei mit dem Dateinamen der sich in Zelle b5 befindet in die Zelle M10. Als Trennung verwende ich das Zeichen, dass in Zelle c6 steht. Soweit funktioniet auch alles. Nun zu meinen Problemen...
1. Wenn Werte in der CSV/TXT Datei Punkte enthalten z. b.: 6.99 dann wird ein Datum angezeigt
2. Wenn die Werte in der CSV/TXT durch mehrere Leerzeichen oder durch mehrere Kommas von einander getrennt sind z. b.: "25.15 15.25 6.99", dann werden die Trennzeichen nicht als 1 Trennzeichen behandelt und die Werte werden in falsche Spalten eingefügt. Dh. in Spalte M10 steht dann 25.15 in Spalte N10 ist leer (da zw. den Zahlen 25.15 und 15.25. zwei leerzeichen sind usw..
Ich hoffe wirklich das ihr mir dabei helfen könnt. Anbei mein aktueller Code:
Sub ImportCSV2() ' CSV IMPORT in Tabelle1
Dim ws1 As Worksheet
'Dim ws2 As Worksheet
Dim searchText As String
Dim fileName As String
Dim filePath As String
Dim delimiter As String
Tabelle1.Range("m9:aO500").ClearContents 'Der Import
' Setze Arbeitsblätter
Set ws1 = ThisWorkbook.Sheets("Tabelle1")
'Set ws2 = ThisWorkbook.Sheets("Tabelle2")
' Definiere den Suchtext aus Zelle G2
searchText = ws1.Range("b5").Value
' Setze das Laufwerk und den Pfad zur CSV-Datei
filePath = "C:\Dokumente\"
' Suche nach der CSV-Datei, die den Suchtext enthält
fileName = Dir(filePath & "*" & searchText & "*.csv")
' Überprüfe, ob eine Datei gefunden wurde
If fileName > "" Then
' Setze das Trennzeichen für die CSV-Datei
'delimiter = vbTab ' Tabstop
'delimiter = ";" ' Semikolon
'delimiter = " " ' Slash
delimiter = ActiveSheet.Range("c6")
' Lösche den Inhalt von Tabelle2
'ws2.Cells.Clear
' Öffne die CSV-Datei und importiere sie in Tabelle2
With ws1.QueryTables.Add(Connection:="TEXT;" & filePath & fileName, Destination:=ws1.Range("m10"))
.TextFileOtherDelimiter = delimiter
.TextFileParseType = xlDelimited
.Refresh
End With
For Each cell In ws1.Range("M10:M500")
If cell.Value = "" Then
If cell.Offset(0, 1).Value = "" Then
cell.Offset(0, 1).ClearContents
End If
End If
Next cell
MsgBox "Die CSV-Datei wurde erfolgreich importiert.", vbInformation
Else
' Wenn keine CSV-Datei gefunden wurde, suche nach einer TXT-Datei
txtFileName = Dir(filePath & "*" & searchText & "*.txt")
' Überprüfe, ob eine TXT-Datei gefunden wurde
If txtFileName > "" Then
delimiter = ActiveSheet.Range("c6")
' Öffne die TXT-Datei und importiere sie in Tabelle1
With ws1.QueryTables.Add(Connection:="TEXT;" & filePath & txtFileName, Destination:=ws1.Range("M10"))
.TextFileOtherDelimiter = delimiter
.TextFileParseType = xlDelimited
.Refresh
End With
For Each cell In ws1.Range("M10:M500")
If cell.Value = "" Then
If cell.Offset(0, 1).Value = "" Then
cell.Offset(0, 1).ClearContents
End If
End If
Next cell
MsgBox "Die TXT-Datei wurde erfolgreich importiert.", vbInformation
Else
MsgBox "Es wurde keine CSV-Datei mit dem Suchtext gefunden.", vbExclamation
End If
End If
End Sub