Man kann innerhalb von StarBasic-Makros auch interne Funktionen von Calc aufrufen.
Dazu wird
der Service com.sun.star.sheet.FunctionAccess verwendet. Er bietet Zugriff auf die internen
Funktionen.
Als Erstes muß man den Service starten.
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess"
)
Danach muß man sich ein Array mit der Anzahl der möglichen Parameter erzeugen. Dieses
Array
am Besten vom Typ Variant, da dieses Array unterschiedliche Typen beinhalten kann.
Dim args( 0 ) As Variant
args(0) = "test"
Jetzt kann man auf die Funktion zugreifen (Hier auf die Text-Funktion Länge)
result = oFunctionAccess.callFunction( "Len", args() )
Wenn mehr Parameter übergeben werden können oder müssen, passt man das Array
entsprechend an.
Hier als Beispiel die Funktion KGV:
Dim args( 2 ) As Variant
args(0) = 8
args(1) = 4
args(2) = 12
result = oFunctionAccess.callFunction( "LCM", args() )
Achtung:
Wie man in den Beispielen sehen kann, muß man für die Funktion die englische Bezeichnung
verwenden. Die deutsche Bezeichnung führt zu einem Fehler. Leider kann man nicht sofort auf die
englische Bezeichnung schließen. Hier gibt es eine Liste mit den deutschen und englischen
Bezeichnungen: Als
calc-dokument
oder als pdf-Datei.
Oder hier in der FAQ unter: Wie kann man
Funktionen von Calc verwenden?