Hallo,
ich habe ein CSV-Makro, das CSV-Dateien öffnet, die mit Komma getrennt sind. Das Problem dabei ist, dass es Strings gibt, die durch Komma getrennt sind. Dieses Komma wird dann von Excel natürlich auch als Trenner erkannt und die die Datei wird nicht richtig dargestellt.
Ich habe dann versucht andere Delimiter in das Makro einzubauen, aber es funktioniert immer noch nur mit dem Komma. Obwohl ich Komma als Delimiter sogar ausschalte. Hier ist der Quelltext:
Application.Workbooks.OpenText Filename:=Path & File, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False
Kann mir jemand sagen, was ich falsch mache. Gibt es vielleicht andere Möglichkeiten mein Problem umzugehen als anderen Delimiter einzubaue?
Bin im Voraus dankbar.
Viele Grüße,
Michael
ich habe ein CSV-Makro, das CSV-Dateien öffnet, die mit Komma
getrennt sind. Das Problem dabei ist, dass es Strings gibt,
die durch Komma getrennt sind. Dieses Komma wird dann von
Excel natürlich auch als Trenner erkannt und die die Datei
wird nicht richtig dargestellt.
Hi Michael,
poste mal hier so 10 Zeilen aus Spalte A.
Ist natürlich grundsätzlich ein Problem wenn pro Zeile Werte durch Komma getrennt sind die im Wert selbst auch noch Kommas haben.
Mal schauen , vielleicht gibt es eine Regelmäßigkeit die man dann zum Trennen benutzen kann.
Option Explicit
Sub tt()
Dim Nr, Satz, Zei
Nr = FreeFile
Open Path & File For Input As #Nr
While Not EOF(Nr)
Zei = Zei + 1
Line Input #Nr, Satz
Cells(Zei, 1) = Satz
Wend
Close
End Sub
Gruß
Reinhard
Hallo Reinhard,
vielen Dank für deine Antwort.
Ich konnte bei den Dateien keine Regelmäßigkeiten feststellen. Es sind einfach Wörter die ab und zu durch Komma getrennt werden. Diese kommen in jeder Spalte vor, deswegen poste ich jetzt die Spalte A nicht.
Kennst du vielleicht einen Weg, wie man im Makro anstatt Komma als Trenner z.B. eine Pipe benutzen kann? Habe gestern den ganzen Abend rumprobiert und bin langsam aber sicher mit meinem Latein am Ende
.
Vielen Dank im Voraus,
Michael
Ich konnte bei den Dateien keine Regelmäßigkeiten feststellen.
Es sind einfach Wörter die ab und zu durch Komma getrennt
werden. Diese kommen in jeder Spalte vor, deswegen poste ich
jetzt die Spalte A nicht.
Kennst du vielleicht einen Weg, wie man im Makro anstatt Komma
als Trenner z.B. eine Pipe benutzen kann? Habe gestern den
ganzen Abend rumprobiert und bin langsam aber sicher mit
meinem Latein am Ende
.
Hi Michael,
bei ner csv ist der Name programm, also das Komma ist das Trennzeichen, also nützt es nix beim Einlesen ein anderes Trennzeichen zu benutzen.
Wenn ein eingelesener Satz so aussieht:
a,b,c,d
kann Excel natürlich nicht wissen dass es so wie in Zeile 2 aussehen soll, sondern wandelt es wie in Zeile 1 um.
│ A │ B │ C │ D │
──┼─────┼─────┼─────┼─────┤
1 │ a │ b │ c │ d │
2 │ a │ b,c │ d │ │
──┴─────┴─────┴─────┴─────┘
Dann kann man nur manuell etwas korrigieren.
Völlig anders ist der Fall wenn du auch die csv Datei erzeugst, dann kannst du frei bestimmen welches Zeichen der Trenner sein soll, also so z.B.:
a|b,c|d
Jetzt sehe ich aber in deiner Anfrage keinen Hinweis dass du auch die csv Datei erzeugst.
Gruß
Reinhard
Völlig anders ist der Fall wenn du auch die csv Datei
erzeugst, dann kannst du frei bestimmen welches Zeichen der
Trenner sein soll, also so z.B.:
a|b,c|d
Jetzt sehe ich aber in deiner Anfrage keinen Hinweis dass du
auch die csv Datei erzeugst.
Hallo Reinhard,
doch doch, ich erzeuge die CSV-Dateien selbst. Ich kann sie mit Komma, Semikolon, Tab und Pipe als Trenner erzeugen.
Nur habe ich es eben nicht geschafft das Makro zu umzubauen, dass es mit anderen Trennern als Komma funktioniert. Für die Hilfe wäre ich sehr dankbar.
Viele Grüße,
Michael
doch doch, ich erzeuge die CSV-Dateien selbst. Ich kann sie
mit Komma, Semikolon, Tab und Pipe als Trenner erzeugen.
Nur habe ich es eben nicht geschafft das Makro zu umzubauen,
dass es mit anderen Trennern als Komma funktioniert. Für die
Hilfe wäre ich sehr dankbar.
Hi Michael,
die Namen die Vba kennt zu benutzen als Variablennamen bringt nur eins irgendwann, Probleme 
Also nie „Path“ „Name“ o.ä. benutzen. Entweder deutsch (naja, klappt bei „Name“ nicht) „Pfad“ oder so „myPath“,„strPath“, „lngRow“ „intColumn“
Letztere haben den großen Vorteil dasss du bei langem Codes gleich am Namen erkennst welcher VariablenTyp die Variable ist.
Ungetestet, weil ich grad nur XL97 aufhbe und das kennt kein „Split“:
Option Explicit
Sub Lesen()
Dim Pfad, Trenner, Datei, Nr, Splitsatz, Satz, S, Zei
Pfad = "c:\Test\"
Datei = "test.txt"
Trenner = "|"
Close
Open Pfad & Datei For Input As #1
While Not EOF(1)
Zei = Zei + 1
Line Input #Nr, Satz
Splitsatz = Split(Satz, Trenner)
For S = 0 To UBound(Satz)
Cells(Zei, S + 1) = Splitsatz(S)
Next S
Wend
Close
End Sub
Sub Schreiben()
Dim Pfad, Trenner, Datei, Satz, S, Zei
Pfad = "c:\Test\"
Datei = "test.txt"
Trenner = "|"
Close
Open Pfad & Datei For Output As #1
For Zei = 1 To Range("A65536").End(xlUp).Row
Satz = ""
For S = 1 To Cells(Zei, 256).End(xlToLeft).Column
Satz = Satz & Cells(Zei, S).Value & Trenner
Next S
Print #1, Left(Satz, Len(Satz) - 1)
Next Zei
Close
End Sub
Gruß
Reinhard