MS Excel: DatumsFormat US / DE

Hallo zusammen

Denksportaufgabe:
Gegeben:

  1. WinXP mit Ländereinstellung „Deutschland“
  2. SQL-Server 2000
  3. US Applikation die Daten in den SQL - Serverschreibt.

Fragen:
Wenn ich auf diesem PC über das Excel-Objektmodell eine Exceldatei erstelle…

  1. Wenn ich Datumswerte aus dem SQL-Server auslese und über das „Cell“ Objekt in ein „Sheet“ schreibe:
    objExcel.ActiveWorkbook.Sheets(1).Cells(1 + I, 8) = Format (DBGetValue(objHandle, „LtzAkt“), „Short Date“)
    wird dann automatisch das „Format“ der Zelle („Text“, „Zahl“, etc.) mit definiert?

  2. Kann ich zur Sicherheit, dieses Format auch setzen?

  3. Was erhalte ich in der neuen Exceldatei, wenn die Daten in den Datumsfeldern im SQL-Server in US-Format vorliegen?

Vielen Dank und Grüsse
Peter

Hallo Peter!

Denksportaufgabe:
Gegeben:

  1. WinXP mit Ländereinstellung „Deutschland“
  2. SQL-Server 2000
  3. US Applikation die Daten in den SQL - Serverschreibt.

Vermag ich nicht nachzuspielen…

  1. Wenn ich Datumswerte aus dem SQL-Server auslese und über
    das „Cell“ Objekt in ein „Sheet“ schreibe:
    objExcel.ActiveWorkbook.Sheets(1).Cells(1 + I, 8) = Format
    (DBGetValue(objHandle, „LtzAkt“), „Short Date“)
    wird dann automatisch das „Format“ der Zelle („Text“, „Zahl“,
    etc.) mit definiert?

Nicht zwangsnotwendig. Hängt u. U. auch von der Voreinstellung ab. Grundsätzlich scheint mir Excel immer so intelligent zu sein, dass die Formate umgestellt werden, die ich nicht umgestellt haben will.

  1. Kann ich zur Sicherheit, dieses Format auch setzen?

Das würde ich sogar in jedem Fall tun. .Cells(x,y).NumberFormat entsprechend nach Deinen Wünschen. Kannst natürlich auch die ganze Spalte entsprechend formatieren, dann musst Du das nicht für jede Zelle machen.

  1. Was erhalte ich in der neuen Exceldatei, wenn die Daten in
    den Datumsfeldern im SQL-Server in US-Format vorliegen?

Mangels Nachspielbarkeit vermag ich das nicht zu entscheiden. Ich würde es so versuchen, dass ich das DB-Feld in eine Date-Variable einlese und dann diese in die Zelle schreibe. Das gibt wenigstens u. U. Fehler, wenn der Feldwert nicht in ein Datum gewandelt werden kann.

Beim Einlesen solltest Du irgendwie darauf achten, dass das Quell-Format korrekt brücksichtigt wird. Einfach mal ausprobieren; ich hätte in einem Anfall von Naivität behauptet, dass der DB-Treiber den Datumswert korrekt übergeben sollte. Wir arbeiten hier ja nicht mit Textfeldern, vermute ich?

Gruß, Manfred

Vielen Dank und Grüsse
Peter

Salü Manfred

Ist diese Syntax korrekt?

objExcel.ActiveWorkbook.Sheets(1).Cells(1 + I, 8).NumberFormat = „tt:mm:jj“

Grüsse Peter

Salü Peter!

Ist diese Syntax korrekt?
objExcel.ActiveWorkbook.Sheets(1).Cells(1 + I, 8).NumberFormat
= „tt:mm:jj“

Syntax ja. NumberFormat weiß ich nicht. Mach’s einfach so, dass Du Dir eine Zelle wie gewünscht formatierst. Testweise trägst Du dazu einen Wert ein. Dann aktivierst Du diese Zelle. Rufe mit [Alt]+[F11] den VB-Editor auf, drücke [Strg]+[G] (für’s Direktfenster) und gib „? ActiveCell.NumberFormat“ ein, gefolgt von [RETURN]. Das wäre dann das Format, welches Du brauchst…

Gruß, Manfred