Hallo Frank,
Nutze die SaveAs-Methode des Worksheet-Objektes mit dem FileFormat xlCSV.
Zwei Nachteile sehe ich mittlerweile:
- 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.
- 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.
deswegen sagte ich ja: worksheet-Objekt verwenden, nicht das workbook-Objekt :-)
Und ja: Wenn Du das aktuelle Workbook verwendest, befindest Du Dich auf einmal in einer "csv-Datei". Das ist nicht schön. Deswegen solltest Du besser das gewünschte Tabellenblatt in eine neues Workbook kopieren - und dieses dann abspeichern. Dann umgehst Du das Problem, dass Du den Ast, auf dem Du sitzt, absägst.
Zweitens: Ja, Du hast wenig Einfluß auf die Speicherung und gerade die Abhängigkeit von den Ländereinstellungen kann gewaltig nerven.
Das ist mir einmal in einem Access-Projekt passiert, dort hatte ich Formulare dynamisch generiert und angepasst. Ich musste alles auf Twips umstellen, um nie, nie, nie in Zeichenketten mit Kommazahlen arbeiten zu müssen. War lehrreich.
Interessant ist, dass Excel durchaus korrekte CSV-Dateien erzeugt, diese allerdings selbst nicht richtig einlesen kann (getestet mit Excel 2007)
Ach ja, noch was: CSV-Dateien solltest Du in Excel _nicht_ über "Datei öffnen" oder das Kontextmenü der Datei öffnen. Nein, Du solltest in einer Arbeitsmappe über Daten -> Importieren gehen. Dann kannst Du einige Parameter festlegen.
Mit Zeilenumbrüchen in Inhalten kommt Excel jedoch nicht klar.
Freundliche Grüße
Vinzenz