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?