Datumsformat mit _ExcelNumberFormat macht Schwierigkeiten

  • Hallo funkey,
    habe mir den Link angeschaut. Leider ist meine letzte Englischstunde schon 45 Jahre her.
    Was ich glaube verstanden zu haben ist, dass es wohl länderspezifische Probleme mit der Formatierung gibt.
    Speziell mein Problem war zwar nicht genannt, könnte aber mit hineingehören.
    Jetzt habe ich versucht, das so zu lösen, dass ich die Formatierung direkt über ein Makro mache.
    In Excel aufgerufen, ist das alles bestens. Ist auch schon tausendfach von mir gemacht worden.
    Starte ich aber das Makro über Autoit, dann habe ich das gleiche Problem. Eine Formatierung der Uhrzeit klappt bestens,
    Aber das Datumsformat wie in meinem Autoit-Beispiel in der Form "DD.MM.JJJJ hh:mm:ss" läuft auf den Hammer.
    Gibt es da noch Hoffnung? ?(

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

  • Crasht das Skript beim ersten oder zweiten Format?

  • Also dieses Testskript funktioniert bei mir einwandfrei:

    [autoit]

    #include "Excel.au3"
    $sFormat_01 = "[$-F400]h:mm:ss AM/PM"
    $sFormat_02 = "TT/MM/JJJJ ss:mm:ss"
    $oExcel = _ExcelBookNew()
    _ExcelWriteCell($oExcel, 41213, "A1") ; 31.10.2012 als Zahl
    _ExcelWriteCell($oExcel, 41213, "A2") ; 31.10.2012 als Zahl
    MsgBox(0, "", "Formatiere nun die Zelle 'A1' mit Format '" & $sFormat_01 & "'")
    _ExcelNumberFormat($oExcel, $sFormat_01, "A1")
    MsgBox(0, "", "Formatiere nun die Zelle 'A2' mit Format '" & $sFormat_02 & "'")
    _ExcelNumberFormat($oExcel, $sFormat_02, "A2")

    [/autoit]

    Deine Formatierungen brachten auch keinen crash sondern nur falsche Ergebnisse.
    Kannst Du bitte prüfen, dass Deine Range-Angaben stimmen? Also
    $iReiheStart, $iSpalteDauer, $iReiheEnde, $iSpalteDauer, $iSpalteDatum, $iSpalteDatum
    müssen für beide Aufrufe von _ExcelNumberForamt einen gültigen Range ergeben.

  • Hallo water,
    Danke für den Tipp und die Mühe :thumbup:
    Jetzt klappt es. Nachdem ich das Format von "dd/mm/yyyy hh:mm:ss" auf "TT/MM/JJJJ ss:mm:ss" umgestellt habe,
    Verstehen kann ich es aber nur teilweise. Die Änderung im Autoit-Code kann ich noch nachvollziehen.

    Ich habe aber auch den Test gemacht und über Autoit ein Excel-Makro gestartet um die Formatierung zu erreichen.
    $oExcel_01.Application.Run("test")
    Ich würde an dieser Stelle annehmen, dass hier die Steuerung an EXCEL-VB abgegeben wird. Somit wäre innerhalb des Excel-Makros auch der Formatierungsausdruck "dd/mm/yyyy hh:mm:ss" richtig. Aber auch im VB musste ich den Code auf "TT/MM/JJJJ ss:mm:ss" ändern, damit der Fehler beseitigt ist.

    Das würde bedeuten, dass jede Länderänderung auf dem Rechner zu Fehlern führen kann. Die Länderänderung ist zwar nicht die Regel, kann aber vorkommen.

    Wenn ich das bei Excel VB sehe, dann scheint dass dort so geregelt zu sein, dass die Codierung einheitlich ist, dann aber über die Ländereinstellung eine Übersetzung erfolgt. (So stelle ich mir das vor :) )

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

  • Witzig ist nur, dass bei mir auch "dd/mm/yyyy hh:mm:ss" nicht crasht, sondern nur eine ungültige Ausgabe produziert.
    Welche Excel und AutoIt Version verwendest Du?
    Ich habe mit Excel 2010 und AutoIt 3.3.8.1 getestet.

  • EXCEL 2007 und da ich erst seit gut einer Woche Autoit kenne, natürlich den letzten Stand. 3.3.8.1
    ist schon seltsam. Da ich vermute, dass das auch mit der Ländereinstellung etwas zu tun hat, Windows 7.

    Was muss ich einstellen, dass ich Antworten die auf meine Anfragen kommen, schneller mit bekomme?

    Ich habe eiserne Prinzipien.
    Wenn sie Dir nicht gefallen, habe ich auch noch andere.

  • Profil bearbeiten -> Einstellungen -> Kommunikation.