Seite 1 von 1
Datum auf Englisch in Calc
Verfasst: Fr, 03.02.2006 08:28
von fichte.buche
Ich hab ein Makro mit dem ich eine Calc-Tabelle mit Infos vollschreibe. Dies funktioniert in Deutsch wunderbar, wenn ich aber für gewisse Kunden auf Englisch das ganze haben will scheitere ich immer an der Umstellung des Datums.
In Deutsch fomatier ich die Zelle mit
Ich hab jetzt mit Makro aufzeichnen herauszufinden welche Nummer ich brauche im auf Englisch umzustellen und dort bekomm ich die Nummer 5081.
Wenn ich das Makro aber dann laufen lasse steht das Datum immer noch in der Form T. MMMM JJJJ in DEUTSCH da.
Wie bekomm ich das Datum auf Englisch hin?
DANKE
Verfasst: Fr, 03.02.2006 09:03
von Toxitom
Hey fichte.buche,
der Foramtcode für YYYY-MM-DD wäre 84.
Ich habe eine Übersicht und ein Makro, das dierdiese Formatcods ausliest und anzeigt. Du findest es
-> hier.
Viel Spass
Thomas
Wie gehts auf Englisch
Verfasst: Fr, 03.02.2006 09:24
von fichte.buche
Hallo Thomas,
Vielen Dank für die rasche Antwort.
Leider wird mit diesen Indexnummern der Monat immer in Deutsch angezeigt.
z.B mit 76 -> 16. Jänner 2006
ich möchte aber
16. January 2006
gibt es hierfür auch eine Möglichkeit?
Viele Grüße
Georg
Verfasst: Fr, 03.02.2006 11:49
von Toxitom
Hey Georg,
ch möchte aber
16. January 2006
gibt es hierfür auch eine Möglichkeit?
Nein. Das wird über das Gebietsschema des Betriebssystems gesteuert. Dann müsstest du das umstellen - mit allen Konsequenzen.
Geht es dir nur um das Anzeigen eines solchen Datums, dann löse das Datum in Basic auf, und setze es als String wieder zusammen, dann kannst du einen Array mit englischen Monatsnamen definieren und entsprechend auswählen.
Jetzt lässt sich aber in Calc nicht mehr damit rechnen
Gruss
Thomas
Danke
Verfasst: Fr, 03.02.2006 21:29
von fichte.buche
Hallo Thomas,
Vielen Dank für die Antwort, jetzt weiß ich wenistens, daß ich nicht mehr weitersuchen muß.
Es bleibt mir also nicht übrig wie wieder einmal drum-rum zu programmieren.
Aber zuerst werd ich mal versuchen meine Kollegen zu überzeugen, daß ein Datumsformat mit nur Zahlen hoffentlich ausreicht. Das wär schon x-mal einfacher.
Nochmals Danke
Gruß
Georg
Verfasst: Fr, 03.02.2006 22:45
von Stephan
ich möchte aber
16. January 2006
gibt es hierfür auch eine Möglichkeit?
Stelle es per Hand ein und lies es aus mit:
Code: Alles auswählen
Sub Main
x = ThisComponent.Sheets(0).getCellByPosition(4,6).NumberFormat
msgbox x
End Sub
ergibt: 5081
dann kannst Du es künftig zuweisen:
Code: Alles auswählen
Sub Main
ThisComponent.Sheets(0).getCellByPosition(4,6).NumberFormat = 5081
End Sub
Gruß
Stephan
Verfasst: Sa, 04.02.2006 11:44
von Toxitom
Hey Stefan,
ergibt: 5081
dann kannst Du es künftig zuweisen:
Ich glaube, das funktioniert nicht. Das geht nur, wenn du im aktuellen Dokument diesen Fromatcode einmalig "erstellt" hast - dann imgleichen Dokument. Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer.
Öffne mal ein neues Dokument und weise den Code einer Zelle zu - das Ergebnis ist nicht vorhersehbar.
Gruss
Thomas
Verfasst: Sa, 04.02.2006 13:38
von Stephan
Hallo Thomas,
Ich glaube, das funktioniert nicht.
Ja, Du hast Recht - peinlich ...
(Ich hatte mir nur das "Ausprobierverfahren" gemerkt und mußte jetzt erstmal nach einem Code suchen.)
Machen wir Dieses:
Code: Alles auswählen
Sub Datum_formatieren()
Dim Landesspezifisch As New com.sun.star.lang.Locale
oZelle = ThisComponent.Sheets(0).getCellByPosition(4,6)
Landesspezifisch.Language = "en"
Landesspezifisch.Country = "us"
FormatCode = "D. MMMM YYYY"
oNummerformat = ThisComponent.NumberFormats
FormatNummer = oNummerformat.queryKey(FormatCode, Landesspezifisch, True)
If FormatNummer = -1 Then
FormatNummer = oNummerformat.addNew(FormatCode, Landesspezifisch)
End If
oZelle.NumberFormat = FormatNummer
End Sub
Der Controller speichert wohl diesen Code irgendwo als "benutzerdefinierten" Code- unter einer beliebigen Nummer.
Die "5081" ist meiner Meinung nach das 'Äquivalent' zu Deiner "81" in der verlinkten Beispieldatei, ich meine der 81er-Teil ist meiner Meinung nach immer die 'Codierung' für:
D. MMMM YYYY
in der jeweiligen Sprache, also wenn deutsch dann für:
T. MMMM JJJJ
Der Zusatz vor der "81" (also hier 50) ist die 'eingestellte' Sprache im obenstehenden Sinne also englisch(USA) (en + us) und ist der Zusatz nicht da ist die Einstellung "Standard". Nach kurzem Test würde ich sagen das gilt so generell, also auch für andere Codierungen, das heißt die 'Formatzahl' setzt sich zusammen aus der landesspezifischen Zahl plus die 'Formatzahl' von "Standard" (gemäß Deiner Beispieldatei).
Problem ist allerdings das ich bisher keine Möglichkeit kenne wie ich beispielsweise aus en + us auf 50 schließen kann ohne es auszuprobieren. Komisch ist auch das ich zwar das en und us bei entsprechenden Einstellungen in Absatzvorlagen (CharLocal) mittels .Language bzw. .Country auslesen konnte, das Gleiche mir aber bei Zahlenformaten in Zellen nicht gelingt (IDL-Referenz unter: .../com/sun/star/lang/Locale.html ist meiner Meinung nach der 'Einstieg' dafür)
Gruß
Stephan