Problem: Eine Excel Tabelle in der unter anderem auch Spalten mit Datumsfeldern vorkommen soll in ein Texfile exportiert werden – im Textfile wird das Datum aber in einem falschen Format angezeigt (Englisch)
Datum in Excel: (Datumsformat: deutsch, standard)
Nach dem Export in eine Textdatei über das Menü, oder auch über folgende VBA-Funktion erhalten wir in der Textdate ein falsches Datumsformat
ActiveWorkbook.SaveAs Filename:=strSaveAsText, FileFormat:=xlUnicodeText, CreateBackup:=False
8/31/2011 LV 1000 9/04/2011 4 EUR INTERN
8/31/2011 LV 1000 9/06/2011 4 EUR INTERN
Dieses Datumsformat wird dann aber von dem Programm welches die Daten wieder importiert nicht verstanden – daher wäre eine deutsche Formatierung des Datums beim speichern erwünscht.
Lösung: über den Parameter „Locale=true“ wird erreicht, dass Excel die Datumseinstellung des aktuellen Desktops (Systemsteuerung) verwendet
ActiveWorkbook.SaveAs Filename:=strSaveAsText, FileFormat:=xlUnicodeText, CreateBackup:=False, Local:=True
31.08.2011 LV 1000 04.09.2011 4 EUR INTERN
31.08.2011 LV 1000 06.09.2011 4 EUR INTERN
Anmerkung: Grundsätzlich ist diese Lösung nicht ganz zufriedenstellend, denn wenn der User beim Exportieren eine andere Systemeinstellung für die Sprache wählt, wird sich das Ausgabeformat des Textes wieder ändern und es wird wohl beim Import in das Folgeprogramm zu einem Fehler kommen. Daher wäre es wünschenswert, wenn nicht nur „Local=True“ gesetzt werden kann, sondern gleich ein fixes Format für den Output gewählt werden kann.
Es gibt tatsächlich auch den Paramter „TextCodepage“ über den die Ausgabesprache fix festgelegt werden könnte, dieser Parameter wird jedoch im speziellen in Excel ignoriert.
Will man dieses Problem professionell lösen, so müsste man den Export mit einem weiteren VBA-Programm entweder mittels format() beeinflussen und z.B. Zeilen- und Spaltenweise exportieren, oder evtl. das ganze Workbook vor dem Export per VBA im richtigen Format in eine neue Seite einfügen und dabei das Datum in einen Text umwandeln – dach wird der Export auch ganz ohne Parameter immer richtig gelingen!
Betrifft: Excel 2000, Excel 2003, Excel 2007, Excel 2010