HERBERS Excel-Forum - das Archiv
Workbooks.OpenText - Datumsformat
Rainer

Liebe XL-ler!
Ich versuche seit geraumer Zeit einen Fehler bei der Umwandlung von Datumsangaben zu finden.
Aus einer SQL-Abfrage wird eine XL-Datei im TXT Format gespeichert. Diese öffne bzw. bearbeite ich mittels VBA, zum Schluss speichere ich die Datei als normale XLS-Datei. Grundsätzlich wird alles richtig gemacht, auch die Pivot-Tabelle etc ist korrekt.
Allerdings muss immer wieder bei der fertigen Datei für Details in der Datentabelle nachgeschaut werden. Hier kann dann nicht nach den Datums-Spalten gefiltert werden, obwohl die Anzeige auf den ersten Blick zwar richtig steht, aber die Werte als Text und nicht als Datum formatiert sind.
Habe schon einiges herumprobiert (auch Formatierung im SQL-Query Analyser). Wenn ich das einlesen "händisch" durchführe und den Makrorecorder mitlaufen lasse, funktioniert das AutoFiltern korrekt. Starte ich den aufgezeichneten Code mit der selben Datei, kann ich nicht mehr filtern. Das Datum wird nicht mehr als solches erkannt, sondern als Text ausgegeben.
Hier der Codeausschnitt, der durch das Aufzeichnen entsteht:
Workbooks.OpenText Filename:= _
"\\servername\..\Datei.xls" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, Tab:=True, FieldInfo:=Array(Array _
(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8 _
, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), _
Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array( _
21, 1), Array(22, 1)), TrailingMinusNumbers:=True
Excel 2003 – aktuellste Patches
Wenn ich eine Datumszelle z.B. mit F2 aktiviere und danach ENTER drücke, wir es korrekt in ein Datum umgewandelt. Dies ist bei 20-30.000 Zeilen und 2 Datumsspalten natürlich ein zusätzliche Aufwand, auch wenn ich es z.B. mit einer Schleife / for each .. durchlaufen lasse. Das muss sich doch beim Einlesen abfangen lassen!
Kennt jemand das Problem?
Danke für eure Hilfe!
Rainer

AW: Workbooks.OpenText - Datumsformat
Renee

Hi Rainer,
Wenn du per VBA ein Datum in einem Filter setzen willst, dann funktioniert das so (Beispiel Datum in Spalte A):


Sub tiler()
Dim Filterdatum As Date
Filterdatum = InputBox("Bitte geben Sie ein Datum ein: ")
Selection.AutoFilter Field:=1, Criteria1:="<=" & Format(Filterdatum, "0")
End Sub


GreetZ Renée

AW: Workbooks.OpenText - Datumsformat
Rainer

Hallo Renée!
Danke für die schnelle Antwort! Die Datei wird von mir täglich erstellt und auf einem Share für div. Auswertungen zur Verfügung gestellt. Wenn ein User bestimmte Details haben möchte, verwendet er das ganz normale AutoFiltern, um an die gewünschten Daten zu gelangen. Dabei wird das Datumsformat benötigt!
LG
Rainer

AW: Workbooks.OpenText - Datumsformat
Rudi

Hallo,
gib mal unter FieldInfo:= bei der entsprechenden Spalte eine 4 als Datentyp an.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Nachfrage
Rudi

Hallo,
warum öffnest du eine .xls mit Opentext?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Workbooks.OpenText - Datumsformat
IngGi

Hallo Rainer,
du hast in den Array-Angaben für alle 22 Spalten eine 1 als zweite Zahl stehen. Damit legst du für alle 22 Spalten als Datentyp Text fest. Versuche es für die Datumsspalten einmal mit einer 3. Die steht für den Datentyp Datum mit der Reihenfolge Tag, Monat, Jahr.
Gruß Ingolf

Danke! Workbooks.OpenText - Datumsformat
Rainer

Lieber Rudi!
Lieber Renée!
Lieber Ingolf!
Danke für eure rasche AntwortInfo! Der Datentyp 4 in "Array(4, 4)" bzw. "Array(5, 4)" war der richtige Hinweis! Interessanterweise hat die zuerst probierte 3 nicht alle Zellen richtig formatiert, ein Teil war richtig, ein Teil noch immer Text ...
Der Vollständigkeit halber noch die Frage von Rudi:
Die SQL-Datei wird als ANSI/Tabstoppgetrennt und gleich mit der Endung ".xls" exportiert. Somit muss ich meines Wissens immer das Workbooks.OpenText verwenden. (so zeigt es auch immer die Aufzeichnung).
Herzlichen Dank! Ihr habt mir wirklich sehr geholfen!
Rainer