Heutzutage können CSV Dateien in UTF8 - oder vermutlich noch wahrscheinlicher: UTF16 - vorliegen. Hier kannst du nicht mehr mit einfachen Mitteln via Open-Anweisung deren Inhalt lesen, denn die Bytes werden hier anders interpretiert und dann einem Zeichen zugeordnet (ein Zeichen ist nicht mehr gleich 1 Byte, wie es bei ASCII der Fall ist). Man müsste also anfangen den Inhalt im Binary-Mode einzulesen... keiner macht sich die Arbeit, weil es a) ist sehr komplex dass selber zu lösen und man wird zwangsläufig fehlerhaft umwandeln weil man es falsch implementiert hat und b) es gibt bereits genügend Alternativen/Fertiglösungen auf die man zurückgreifen kann; und sowohl getestet und zuverlässig sind.
1. Frage: Was spricht dagegen eine CSV per Excel zu öffnen, zu editieren und dann wieder zu speichern?
2. Via Code kann man zum Beispiel via ADO.Stream jede CSV lesen, egal ob sie in ASCII, UTF8 oder UTF16 vorliegt. Ob eine Datei solch eine Codierung verwendet, kann man anhang der ersten 4 Bytes ermitteln und falls diese einem sogenannten BOM (Byte Order Mark) entsprechen, kann man ADO.Stream mitteilen, die Datei mit dem entsprechenden Encoding zu lesen; und das wiederum zeichenweise, zeilenweise, oder alles auf ein Mal. Die Bytes werden durch das angegebene Encoding korrekt in ihr jeweiliges Zeichen umgewandelt (Hinweis: der VBA Editor kann kein Unicode darstellen, aber verarbeiten kann man es dennoch). Fehlt das BOM, dann hat man ASCII vorliegen.
Grüße
|