构建一个函数来评估字符串并返回结果。但是,svc和svc2通过错误“Object Not Set”。但是,当我运行代码时,print语句清楚地表明对象不为null或没有,因为它们返回FALSE。
我错过了什么?
我是否可以进行其他测试以确保svc或svc2已初始化?
Option VBASupport 1
Option Explicit
Function EVAL (str as String)
dim svc as object
dim svc2 as object
SET svc = createUnoService( "com.sun.star.sheet.FunctionAccess" )
SET svc2 = GetProcessServiceManager().createInstance("com.sun.star.sheet.FunctionAccess")
EVAL = svc2.callFunction ("Evaluate", str)
EVAL = svc.callFunction ("Evaluate", str)
End Function
我现在得到错误91,在核心反射调用期间无法强制参数!
注意:正如对此问题的回答中所述,在调用Evaluate时,LibreOffice中存在未解决的错误,因此在OpenOffice解决其错误之前,此问题很可能仍未得到解决。 =(
答案 0 :(得分:0)
这是一个误导性的错误消息。 svc
和svc2
已正确初始化。
问题是Evaluate
无法正常工作。错误报告已在https://bugs.documentfoundation.org/show_bug.cgi?id=102076提交。
我无法使用以下示例。
Option VBASupport 1
Option Explicit
Sub Main()
Evaluate ("A1:A2") ' Works both on Excel and on LibreOffice
Evaluate ("TODAY()") ' Works on Excel, but Runtime Error on LibreOffice
End Sub
http://ooo-forums.apache.org/en/forum/viewtopic.php?f=9&t=3497询问了如何评估字符串。没有任何简单的答案。
修改强>:
要修复新错误,请使用此代码。
EVAL = svc2.callFunction ("Evaluate", Array(str))
这会产生错误消息com.sun.star.container.NoSuchElementException
,我认为这是正确的,因为没有这样的电子表格函数EVALUATE
。
要验证这一点,请在生成=EVALUATE()
的电子表格单元格中输入#NAME?
。