Announcement

Collapse
No announcement yet.

Excel XP Datumsformat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Excel XP Datumsformat

    Hi *,<p>
    habe eine Anwendung geschrieben, die über Excel in eine xls-Datei schreibt. Unter anderem erzeuge ich mit
    <pre>
    ExcelWorksheet.Cells.Item[iRow, 2].Value := dtDate;
    ExcelWorksheet.Cells.Item[iRow, 2].NumberFormat := 'dd.mm.yyyy';
    </pre>
    ein Datumsfeld. Unter Excel 2000 (deutsch) funktioniert das auch wunderbar. Nur bei Excel XP (deutsch) steht dann im Excel z. B. anstatt 08.04.2003 dd.04.yyyy. Hab schon dieses Forum und all meine (wenigen) Unterlagen zu Excel-Fernsteuerung nach Lösungen durchsucht. Bin aber nicht besonders fündig geworden. Hat jemand eine Idee, wie ich das in den Griff bekomme? Vielen Dank im voraus.<p>
    Grüße, Reimund

  • #2
    Hallo,

    bei derartigen Problemen ist es immer eine gute Idee, in Excel ein Makro mitschreiben zu lassen. Wenn ich die Formatierung einer Zelle auf ein Datumsformat ändere, so protokolliert der Makro-Recorder vom deutschen Microsoft Excel 2002 SP1 (XP) folgendes mit:
    <pre>

    Sub Makro1()
    '
    ' Makro1 Makro
    ' Makro am 09.04.2003 von Andreas Kosch aufgezeichnet
    '

    '
    Selection.NumberFormat = "dd/mm/yy;@"
    End Sub

    </pre>

    Die vorgefundenen VBA-Anweisungen müssen dann ebenfalls von Delphi aus in dieser Form aufgerufen werden

    Comment


    • #3
      Hallo Andreas,<p>
      vielen Dank für die rasche Antwort. Diesen Tipp hab ich bereits irgendwo hier im Forum gelesen und natürlich auch probiert. Formatier ich eine Zelle auf tt.mm.jjjj macht der Makro-Rekorder daraus m/d/yyyy. Verwende ich dieses Format jetzt im Delphi-Programm, bekomm ich als Ergebnis 04/d/yyyy. Ich hab auch schon diverse andere Varianten probiert. Immer mit einem falschen Ergebnis. Erst wenn ich im Delphi tt.mm.jjjj verwende, stimmt im (deutschen) Excel das Ergebnis.<br>
      Ich schreib auch eine Formel ins Excelsheet:
      <pre>
      Item[iRow, 4].Value := Format('=Sum(C%d:C%d)', [i, iRow]);
      </pre>
      und die wird interessanterweise vom deutschen Excel korrekt in "=Summe(...)" übersetzt.
      Momentan sehe ich eigentlich nur noch den (weniger schönen) Weg, die Excel-Version zu ermitteln und dann entsprechend das Format zu setzen.
      Aber vielleicht gibt's ja doch noch eine bessere Lösung...<p>
      Grüße, Reimun

      Comment


      • #4
        Hallo,

        wird <b>GetUserDefaultLCID</b> verwendet, um die <i>Language ID</i> zu initialisieren

        Comment


        • #5
          Ja, aber nicht bei diesem Aufruf, sondern wenn ich die Versionsnummer abfrage, gebe ich GetDefaultLCID als Parameter mit.
          <pre>
          l := GetUserDefaultLCID;
          s := ExcelApplication.Application.Version[l];
          </pre>
          Mach ich bei dem ganzen was falsch

          Comment


          • #6
            Hallo Reimund,<p>
            Ich kann Dir bei Deinem Problem nicht helfen, aber mit dem Nutzen von <b>GetUserDefaultLCID</b> habe ich bei Excel sehr schlechte Erfahrungen gemacht! Es kamen bei Anwendern dann undefinierbare Fehlermeldungen, die erst verschwanden, als ich mit dem Wert 0 für LCID ins Feld zog:<br>
            http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B234675<br>
            Wenn Du nur Anwender mit deutschem Excel und deutschen Ländereinstellungen hast, dann vergiß meinen Kommentar, dann wirst Du keine solchen Probleme bekommen.<p>
            Schöne Grüße, Mario Noac
            Schöne Grüße, Mario

            Comment


            • #7
              Hi Mario,<p>
              obwohl die meisten Anwender wohl Deutsche sein werden, ist es nicht ausgeschlossen, daß das Tool auch in anderen Ländern eingesetzt wird. Danke für Deinen Hinweis. Wenn Fehlermeldungen zurück kommen, weiß ich wenigstens gleich, wo ich schauen muß.<p>
              Grüße, Reimun

              Comment

              Working...
              X