2

ich den folgenden Code calculadora.pyAufrufen einer Python-Funktion innerhalb LibreCalc

def calcpy(numA,numB): 
    return numA+numB 

in einer Datei mit dem Namen haben, die die richtige Art und Weise ist() innerhalb LibreCalc die Funktion calcpy aufzurufen? Ich möchte, sagen wir setzen, in der Zelle A1=calcpy(B1,C1) und erhalten das Ergebnis ...

Ich habe bereits das Python-Skript setzen sowohl in /usr/lib/libreoffice/share/Scripts/python/ und /home/lucas/.config/libreoffice/4/user/Scripts/python, auch ich es unter dem Menü sehen Tools-> Macro- > Organisieren Macro-> Python

enter image description here

... aber ich weiß nicht wirklich, wie diese Funktion aufzurufen.

Ich habe einige Beiträge gelesen, wo es wurde vorgeschlagen, die Funktion in Basic, wie dies zu wickeln:

function calcpy(a as double, b as double) as double 
    script = GetScript("calcpy") 
    calcpy = script.invoke(Array(a, b), Array(), Array()) 
end function 

... aber wann immer ich tun = calcpy (5,4) bekomme ich eine Fehlermeldung: "BASIC-Laufzeitfehler. Unterprozedur oder Funktionsprozedur nicht definiert."

Ist das überhaupt möglich? Verwendet Basic den richtigen Weg? Gibt es eine direktere (elegante?) Art, es zu tun?

Danke,

Lucas

Antwort

3

Es gibt eine gute Antwort hier: How can I call a Python macro in a cell formula in OpenOffice.Org Calc? In Ihrem Fall sollte der Basic-Code sein:

function calcpy(a as double, b as double) as double 
    Dim scriptPro As Object, myScript As Object 
    scriptPro = ThisComponent.getScriptProvider() 
    myScript = scriptPro.getScript(_ 
      "vnd.sun.star.script:calculadora.py$calcpy?language=Python&location=user") 
    calcpy = myScript.invoke(Array(a, b), Array(), Array()) 
end function 

Ja, es ist eine direktere/elegante Art und Weise : Create an Add-In.

+0

Danke Jim, ich werde es versuchen und lassen Sie es wissen ... Prost! –

Verwandte Themen