Calc: NumberFormat

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Calc: NumberFormat

Beitrag von mike6 »

Hallo,

ich suche ein Makro für die Formatierung 0,00 €/m².
Wie bekomme ich das hin?

Folgende Code läuft nicht auf allen PC's.

Code: Alles auswählen

sub euro_pro_qm
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "NumberFormatValue"
args1(0).Value = 108

dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args1())
end sub


Moderation,4: Betreff angepasst
Mit freundlichen Grüßen
mike
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc: NumberFormat

Beitrag von komma4 »

mike6 hat geschrieben:Folgende Code läuft nicht auf allen PC's.
Wo läuft er? Wo nicht?

Standardfragen:

Welche OOo-Version?
Welches Betriebssystem?
Welches Speicherformat (*.ods?*.xls?)


Meine Vermutung:
Das NumberFormat wurde nicht in allen Computern -zumindest nicht unter der gleichen ID- eingerichtet.
Die ID kannst Du bei der Einrichtung nicht vergeben. Sie wird intern festgelegt.
Mit Code kannst Du abfragen, ob ein bestimmtes NumberFormat bereits vorhanden ist und dessen ID ermitteln, bevor Du das Format auf die Zelle/den Zellbereich anwendest.

Für ein Codebeispiel musst Du bis nach meiner Mittagspause warten: meine Familie hat Hunger. Und das ist in diesem Land hier nicht zu unterschätzen ;)
Oder sieh' in den Code meiner Extension DateTime2 - dort verwende ich so ein Schnippsel.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Re: Calc: NumberFormat

Beitrag von mike6 »

Hallo,

wie von Dir vermutet, läuft das Makro nur auf dem PC, wo auch das NumberFormat eingerichtet wurde.

Betriebssystem: Winwows / Linux
Speicherformat : ods
OOo-Version 3.3.2

Code: Alles auswählen

Für ein Codebeispiel musst Du bis nach meiner Mittagspause warten:
Ich warte gerne.
Mit freundlichen Grüßen
mike
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc: NumberFormat

Beitrag von komma4 »

Code: Alles auswählen

Sub addNumberFormat
sFormat = "0,00 ""€/m²"" "
Dim aLocale As New com.sun.star.lang.Locale
oFormats = _
 ThisComponent.NumberFormats
neuesFormatID = _
 oFormats.queryKey( sFormat, aLocale, True )
' Schluesselwert nicht gefunden: hinzufuegen Format
' format not found - key not returned: add format
If neuesFormatID < 0 Then
 neuesFormatID  = _
 oFormats.addNew( sFormat, aLocale )
 msgbox "neue ID: " & neuesFormatID
End If
getestet mit OOo3.2.1/Linux

Eine neu angezeigte ID kannst Du dann in Deinem Code einfügen und den zum Setzen verwenden.

Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Re: Calc: NumberFormat

Beitrag von mike6 »

Hallo,

vielen Dank. Funktioniert einwandfrei.

Kann ich bereits vergebene ID's auch auslesen?
Wie lautet dazu der Code?
Mit freundlichen Grüßen
mike
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc: NumberFormat

Beitrag von komma4 »

Im Beispiel die Anweisung .querykey, liefert eine ID >=0, wenn sie vorhanden ist.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten