录制宏时使用内置的 Calc 函数

Using built in Calc function when recording a macro

我正在为工程师完成 Excel 工作,并尝试将其改编为 LibreOffice Calc。我遇到了 运行 个问题。我知道这在不使用宏的情况下更容易做到,但请原谅我。其中一项练习是开始录制宏,键入:

=RAND()

按回车键并停止录制。

当我 运行 宏没有任何反应。我尝试使用任何其他 Calc 内置函数,但同样的事情发生了。查看宏基本文件,果然什么都没有发生。

录制宏时可以使用内置函数吗?如果有怎么办?

目前,LibreOffice 宏录制器不录制添加 built-in 功能。事实上,记录器有很多限制,通常会导致代码不佳(主要使用调度程序)。

相反,根据 https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Function_Handling.

等文档编写 API 代码
Sub CallSpreadsheetFunction
    funcAcc = createUnoService("com.sun.star.sheet.FunctionAccess")
    oSheet = ThisComponent.getSheets().getByIndex(0)
    oCell = oSheet.getCellRangeByName("A1")
    oCell.setValue(funcAcc.callFunction("RAND", Array()))
End Sub

开始学习 LibreOffice 宏的好地方是 http://www.pitonyak.org/oo.php

请注意,学习 LibreOffice Basic 对学习 MS Office 没有太大帮助 VBA。两种语言和平台完全不同。