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



Am 19.04.2018 um 19:23 schrieb Gerhard Weydt:
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

Am 19.04.2018 um 18:00 schrieb dmaths:
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







--
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Antwort per Email an