Hellihello Vinzenz,
Nutze die SaveAs-Methode des Worksheet-Objektes mit dem FileFormat xlCSV.
Zwei Nachteile sehe ich mittlerweile:
1. wähle ich die Methode aus VBA heraus, kommt was anderes heraus (einmal Semikolon, einmal Komma) als übers Menü. Mit "locale:=true" verändert sich u.U. - je nach User-Einstellung - der Spaltendelimiter.
2. Heißt das Dokument nach dieser VBA-Aktion dann anders und ist komplett konvertiert. "Die Nutzerin" hat nun ein anderes benanntes und formatiertes Dokument mit nur einem Arbeitsblatt, ohne es "bermekt" zu haben.
Zu CSV fand ich noch: http://en.wikipedia.org/wiki/Delimiter-separated_values.
"ASCII includes several control characters that are intended to be used as delimiters. They are: 28 file separator, 29 group separator, 30 record separator, 31 unit separator."
Fand ich auch mal interessant.Aber:
"Use of these characters has not achieved widespread adoption; some systems have replaced their control properties with more accepted controls such as CR/LF and TAB."
Im Grund ist ja der Zeilentrenner auch kein "char" mehr, sonder zwei "char"s (spricht man das eigentlich "tschar" wie bei "chair" oder "käir" wie bei "care" und "character" ?)
Schlussendlich wäre aber wohl die weit verbreitet Variante nun diese, wenn ich da Recht verstehe:
Umgebungsdelimiter= >>"<<
Spaltendelimiter= >>;<< (>>,<< mag Excel scheints nicht so)
Zeilendelimiter = >>ASCII(13)ASCII(10)<< (CR/LF)
Die Logik ist wie folgt:
Für jede Zelle
1. wenn der Umgebungsdelimiter vorhanden, dann diesen verdoppeln
2. wenn eins der drei Delimiterzeichen vorhanden, dann Zelle in Umgebungsdelimiter einpacken
3. wenn nicht Zeilenende, nach der Zelle den Spaltendelimiter packen, sonst ist es Zeilenende, dann kommen die beiden Zeilendelimiter.
Für die Logik des Auslesens hieße das:
Steht am Anfang ein Umgebungsdelimiter, ist das Ende der Zelle dort, wo eine ungerade Anzahl von Umgebungsdelimitern vorkommt, und zwar beim letzten Zeichen davon abzüglich desselbigen. Kommt dannach ein Semikolon, ists ein Zellenende, sonst muss ein CR/LF kommen, dann ists ein Zeilenende; wenn beides nicht zutrifft, ist die Datenstruktur beschädigt.
Dank und Gruß,
frankx