Michael Dannenhöfer zeigt in seinem Werk "StarBasic / OpenOffice.org Basic FAQ" unter Ziffer 7.5.7 ein für mich sehr interessantes Beispiel für die Funktion LCM (errechnet das kleinste gemeinsame Vielfache - KGV), wie man die eingebauten "Worksheet-Funktionen" von Calc auch in Star-Basic (und hoffentlich auch in LO-Basic?) verwenden kann.
Nun habe ich mir eine kleine Prozedur gebastelt, mit deren Hilfe ich auch andere Funktionen aus Calc nützen kann; das funktioniert zwar bei LCM, aber schon bei der Function SUM (Summe bilden) bin ich kläglich gescheitert.
Code: Alles auswählen
Private Sub Demo_pCalcFunctions()
MsgBox pCalcFnc("LCM", "8;4;12") 'KGV (kleinstes gemeinsames Vielfaches) klappt
MsgBox pCalcFnc("SUM", "8;4;12") 'SUMME (Summe aus übergebenen Werten) Fehler
MsgBox pCalcFnc("SUM", "$A$2:$A$4") 'SUMME (Summe aus übergebenem Bereich) Fehler
MsgBox pCalcFnc("SUM", "$Tabelle6.$A$2:$A$4") 'SUMME (Summe aus übergebenem Bereich) Fehler
End Sub
Private Function pCalcFnc(ByVal strFnc As String, _
ByVal strArg As String) as Variant
Const strSvc As String = "com.sun.star.sheet.FunctionAccess" 'Service für den Zugriff auf die Calc-Funktionen
Dim varArgs() As Variant 'Array für die zu übergebenden Parameter
Dim objFncAcs As Object 'Objekt für den Zugriff auf die Calc-Funktionen
varArgs() = Split(strArg, ";") 'Parameter in Array schreiben
objFncAcs = createUnoService(strSvc) 'Service starten
pCalcFnc = objFncAcs.callFunction(strFnc, varArgs()) 'Funktion aufrufen und Resultat zurückgeben
End Function
< BASIC- Laufzeitfehler.
< Es ist eine Ausnahme aufgetreten
< Type: com.sun.star.lang.IllegalArgumentException
< Message: at
< C:/cygwin64/home/buiIdslave/source/libo-core/sc/source/ui/unoobj/funcuno.cxx:648
Ist speziell dieser Code von Dannenhöfer grundsätzlich für LO-Basic nicht oder nicht mehr geeignet oder habe ich etwas falsch verstanden oder einfach nur einen Wurm hineingebracht?
Vielleicht gibt es auch eine aktuellere Version für den Zugriff auf die Calc-Funktionen? Ich bin für jede Hilfe dankbar!
Meine Ausstattung:
Windows 11, LibreOffice 24.2.6.2 (X86_64)
Vorab schon recht herzlichen Dank für die Unterstützung und liebe Grüße
vom Martin