Calc: numbertext() in Base nutzen

Hallo,
bis jetzt habe ich in Base eine rudimentäre
Übersetzung von Zahlen in Worte
mit einer kleinen zweispaltigen Tabelle "inWorten" und
einer Abfrage bewerkstelligt:

SELECT ( "Betrag" / 1000 ) AS "z", ...
...
"inWorten"."text" || 'tausend' AS "BETRAGINWORTEN", ...
...
WHERE "inWorten"."zahl" = "z"
...

Das geht solange gut wie als "Betrag" nur ganze Tausender vorkommen.
Ansonsten wird das ganze ziemlich unübersichtlich...

Für Calc gibt es ja die Extension numbertext.oxt, die eine Funktion
NUMBERTEXT(z;"Sprachcode") zur Verfügung stellt und diese Übersetzung eigentlich ganz schön macht. Aber eben nur in Calc-Formeln.

Muss man nun in Base (im Hintergrund) per Makro
- erst ein Calc-Dokument erzeugen,
- die Zahl eintragen
- die Funktion NUMBERTEXT verwenden
- das Ergebnis auslesen
- das Calc-Dokument wieder zumachen?

Oder Weiß jemand einen eleganten Weg um mit einem Makro in Base direkt eine Calc-Funktion zu verwenden?

Auf der Seite numbertext.org findet sich (neben der LO-Extension) auch noch eine Java-Datei numbertext.jar, die jemand vielleicht so in LibreOffice installieren könnte, dass man von Base aus darauf zugreifen könnte??
- LibreOffie ist doch so unglaublich flexibel erweiterbar!?

Mit hoffnungsvollen Grüßen
Gisbert

Hallo Gisbert,

Marcelly und Godard geben in ihrem Buch "Programmation OpenOffice.org et LibreOffice zwei Beispiele, wie man Calc-Funktionen von anderen Modulen aus aufruft. Ich habe es selber nicht probiert.Ich schicke dir nur die Makros, du bist ja wahrlich kein Anfänger, das wird dir sicher genügen:

rem Code09-03.ods bibli : Fonctions Module1
Option Explicit
Sub UtiliserFonctionCalc()
Dim params As Variant
params = Array(35,75,1110)
print PPCM(params())
' appel sans utiliser de variable intermédiaire
print PPCM(Array(17, 525, 357, 76, 54))
End Sub
Function PPCM(liste As Variant) As Long
Dim acceder As Object
acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
PPCM = acceder.callFunction("LCM", liste)
End Function

und das zweite:

rem Code09-03.ods bibli : Fonctions Module1
Option Explicit
Sub UtiliserFonctionCalc()
Dim params As Variant
params = Array(35,75,1110)
print PPCM(params())
' appel sans utiliser de variable intermédiaire
print PPCM(Array(17, 525, 357, 76, 54))
End Sub
Function PPCM(liste As Variant) As Long
Dim acceder As Object
acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
PPCM = acceder.callFunction("LCM", liste)
End Function

Gruß

Gerhard

Hallo Gerhard,
wow! das ist wirklich easy...

Sub EineFonctionCalc()
Dim params As Variant
params = Array(35,"de-DE")
print inWorten(params())
End Sub

Function inWorten(liste As Variant) As String
Dim acceder As Object
acceder = CreateUnoService("com.sun.star.sheet.FunctionAccess")
inWorten = acceder.callFunction("NUMBERTEXT", liste)
End Function

+ vielen Dank für den Tipp!
Gisbert