问题标签 [libreoffice-basic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2550 浏览

ubuntu-12.04 - 在“基本”OpenOffice 编程中传递数组

我被要求在工作中做点什么,因为我运行的是 Ubuntu 而不是 Windows,所以我有 Libre Office(LO Writer 相当于 Word)。- 任务是自动化一些合同,其中文档保持 90% 相同,除了一些变量从 doc 到 doc。

首先 - Basic 是一场噩梦,通常整个宏编写过程也非常糟糕。

现在到“代码” - 我不断收到一些错误BASIC error: Argument is not optional ,我要做的就是将两个数组传递给另一个函数:

一般来说 -

有没有人知道比“基本”更好的方法来做这件事,这真的让我发疯。我知道它可以用 Python 完成,但我有点希望有一个更简单的方法,问题是 word 文档有需要定义的表和东西,所以我不能只是将模板复制/粘贴到java类中并修改它..

谢谢!

0 投票
2 回答
1624 浏览

c - 从 LibreOffice Basic 调用 C 共享库函数

我正在尝试从 LibreOffice Basic 调用 C 共享库函数,但是当它到达 Declare 行时,我总是得到“基本运行时错误。未实现”。这只是为了一件有趣的事情,但无法做到这一点让我很烦恼。

Declare 语句如下所示:

Declare Function score_word Lib "libscrabblescore.so" (ByRef word As String, ByRef bonus As String) As Integer

C 函数声明如下所示:

int score_word(char* word, char* word_bonuses)

(也许 ByRef word As String 不是 char* word 的正确翻译?我找不到有关如何将 char* 参数用于 LibreOffice Basic 函数的文档。)

我通过使用 Python 的 ctypes 模块调用它来验证共享库本身:

(所以我有“生命、宇宙和一切的终极问题的答案”,而不是关于如何在 LibreOffice Basic 中做到这一点!)

我也尝试在 Declare 语句中使用绝对路径,但没有任何区别。

我发现了一个关于调用 DLL 主题的 Windows 线程,提问者说他​​需要将 DLL 放在特定位置(LibreOffice bin 目录),以便 LibreOffice 可以访问它。Linux 上本身没有 LibreOffice bin 目录,不幸的是,我可以在我的机器上识别出 351 个候选目录(我的路径,以及名称中带有“libreoffice”的所有文件夹或带有“libreoffice”的文件夹下的所有文件夹)名字)。

我尝试了一种霰弹枪方法并在所有 351 个目录中放置了一个指向共享库的符号链接,但随后 Calc 在启动时挂起。所以我删除了这些,启动了 Calc,然后将它们全部放回原处并尝试了该功能。如果这是一个位置问题,您会认为 LibreOffice Basic 应该在声明点加载库。仍然没有运气。

oooforums 上有一些看起来很有希望的东西,但是当我尝试查看该线程时,该站点会超时。(编辑:我今晚设法查看了该线程,这是 Windows 安全问题。我关闭了 LibreOffice 中的所有宏安全性,但问题仍然存在。)

那么,有没有人从一个知道我做错了什么的 LibreOffice Basic 程序中成功调用了 C 共享库函数?谢谢!

0 投票
1 回答
2752 浏览

html - 使用 Libreoffice Basic 读取 HTML 页面

我是 LibreOffice Basic 的新手。我正在尝试在 LibreOffice Calc 中编写一个宏,该宏将从单元格(例如 Stark)中读取维斯特洛贵族家族的名称,并通过在冰之维基上的相关页面上查找来输出该家族的词和火。它应该像这样工作:

在此处输入图像描述

在此处输入图像描述

这是伪代码:

我的问题是第二行,我不知道如何读取 HTML 文件。我应该如何在 LibreOffice Basic 中执行此操作?

0 投票
1 回答
5689 浏览

regex - 在 libreoffice calc 宏中使用正则表达式从单元格中的括号中提取文本

在 Ubuntu 12.04 上使用 Libreoffice 3.5.7.2。

我在计算单元格中有以下形式的文本:(IBM) Ibm Corporation。

我正在尝试使用正则表达式来提取()之间使用基本宏的文本。这是我到目前为止所尝试的。

myRegex.SearchString 行包含我尝试过的各种版本。结果总是一样的。返回单元格的全部内容,而不仅仅是 () 之间的文本。有没有办法只提取()之间的文本?

谢谢,吉姆

0 投票
1 回答
724 浏览

libreoffice - LibreOffice 基本数学函数

我需要为 librebasic 宏代码中的一些值提供动力。我们有 func POWER(A; B) 但它的语法是“cell-formula”

但我需要像“pow”这样的原生基本功能。

我试过 SQL 函数

在代码中

但它显示子程序未确定的错误。

0 投票
3 回答
1800 浏览

libreoffice - 在 LibreOffice 宏的 Basic 中获取文档路径

我知道这个问题已经得到解答,但给定的解决方案对我不起作用。给定的解决方案是:

实际上,这会为我返回一个空字符串 ("")。有什么我错过的吗?

我在 Kubuntu 12.04 上使用 LibreOffice 4.3.1.2。

谢谢你的帮助!

0 投票
0 回答
2732 浏览

libreoffice - Libre Office Basic 用户定义函数中的目标搜索

我正在尝试使用 Libre Office Basic 为 Libre Office Calc 编写用户定义的函数,该函数将 Goal Seek 作为函数运行,而不是我去菜单并单击。

我想要做的是传递一个单元格作为公式的第一个参数,第二个参数是我想要设置公式的值,第三个参数是包含要操作的变量的单元格.

因此,例如,我想在 calc 中输入单元格 A3,=GSeek2(A1,5,A2)其中 A1 包含=A2 + 1,A2 从 0 开始,并且 A3 等于 4。

我认为要操作的公式和单元格需要通过Goal Seek函数作为地址传递,但我不确定。我尝试了以下代码,但我不断收到“基本语法错误。意外符号:目标。” 有人知道我要去哪里错了吗?

0 投票
1 回答
192 浏览

openoffice.org - 无法访问公开接口中的所有功能?

我在 OpenOffice/LibreOffice Basic 中的编码有一个相当基本的问题,我似乎无法弄清楚。我并不总是可以使用我应该使用的所有功能。这是一个例子:

doc.Text.Dbg_SupportedInterfaces属性告诉我,我应该有权访问的接口之一是com.sun.star.text.XParagraphAppend,它旨在公开finishParagraphappendParagraph,但我似乎只能访问finishParagraph。为什么是这样?这不是一个孤立的案例——在所有地方,我都看到我应该可以访问我无法访问的功能。

0 投票
1 回答
1613 浏览

libreoffice-basic - 我在哪里可以找到 LibreOffice API for BASIC 的描述

我想使用 BASIC 为 LibreOffice 创建一些宏。但是我找不到 API 描述。它在帮助和互联网中都不存在。当我尝试用谷歌搜索时,我得到了大量的 C++、Java、Python 示例,但没有一个带有 BASIC 的 www。

例如,我可以从哪里获得对象的层次结构及其方法?

0 投票
1 回答
1886 浏览

macros - 将 Open/Libre Office 按钮链接到宏中的单元格和引用单元格

我想在自定义电子表格(Open/Libre/Star Office)的某些单元格中添加 [一组] 标准化宏 [s]。

应使用放入相关单元格的表单按钮激活所述宏。

我遇到了几个与“相关单元格”的访问相关的问题:

  1. 如果我尝试将按钮锚定到单元格,它将转到 A1 而不是当前选定的单元格。
  2. 我可以将一个基本片段连接到按钮,但我发现无法检索“相关单元格”(即:包含按钮的单元格)。

我正在尝试做的(作为第一个工作示例)是添加一个按钮来增加单元格的数值(可能禁用直接编辑;我希望该值在每次按下按钮时增加一个,否则无法更改单元格)。

这样的事情有可能吗?

任何示例(或指向文档的指针)都非常受欢迎。

注意这个问题给出了一些关于如何在 VBA (Excel) 中解决问题的提示,但我没有发现 [L|O|S]Office