Excel VBA TextExport: Problme beim Datumsformat

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

Access Recordsource nach 256 Zeichen abgeschnitten

Betrifft: Microsoft Access XP, 2000, 2003 (noch nicht getestet mit 2007, 2010)

Problem: Sie wollen die Recordsource einer Form als String auslesen, diese wird jedoch nach 256 Zeichen abgeschnitten.

strSQL = Me.Recordsource
debug.print Len(strSQL)
256

Der Grund für das Problem könnte folgender sein: Sie haben die Datenquelle der Form mit Me.Recordset oder Me.RecodesetClone gesetzt – dabei wird anscheinend der Recordset-String nicht sauber gesetzt.

Set rs = CurrentDb.OpenRecordset(strSQLStart & strSQL & strGroup & strOrder, dbOpenDynaset)
Set Me.Recordset = rs

Obwohl diese Abfrage an sich auch bei langen Strings perfekt funktioniert wird eben nur die Eigenschaft Me.Recordsource nicht richtig gesetzt.
Soll später etwa in einem anderen Formular oder Bericht aber genau dieser String ausgelesen werden kommt es zu einem Problem.

Als Lösung können können Sie folgende Änderung vornehmen:

Me.Recordsource = strSQLStart & strSQL & strGroup & strOrder

Danach kann der Recordset auch wieder in größerer Länge als 256 Zeichen ausgelesen werden.
Sofern es den restlichen Programmverlauf nicht stört, kann man dann auf „set rs“ komplett verzichten!