我在名为calculadora.py
的文件中包含以下代码def calcpy(numA,numB):
return numA+numB
从LibreCalc中调用函数calcpy()的正确方法是什么?我想把它放在单元格A1=calcpy(B1,C1)
中并获得结果......
我已经将python脚本放在/usr/lib/libreoffice/share/Scripts/python/
和/home/lucas/.config/libreoffice/4/user/Scripts/python
中,我也可以在菜单Tools-&gt; Macro-&gt; Organize Macro-&gt; Python <下看到它/ p>
...但我真的不知道如何调用该函数。
我已经阅读了一些帖子,建议将这个函数包装在Basic中,例如:
function calcpy(a as double, b as double) as double
script = GetScript("calcpy")
calcpy = script.invoke(Array(a, b), Array(), Array())
end function
...但每当我使用= calcpy(5,4)时,我都会收到错误消息:&#34; BASIC运行时错误。未定义子程序或功能程序。&#34;
这甚至可能吗?使用Basic是正确的方法吗?这样做有更直接(优雅吗?)的方式吗?
谢谢,
卢卡斯
答案 0 :(得分:3)
这里有一个很好的答案:How can I call a Python macro in a cell formula in OpenOffice.Org Calc?在你的情况下,基本代码应该是:
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
是的,有更直接/更优雅的方式:Create an Add-In。