你能在 LibreOffice 中用 Python 录制宏吗?

Posted

技术标签:

【中文标题】你能在 LibreOffice 中用 Python 录制宏吗?【英文标题】:Can you RECORD a macro in Python in LibreOffice? 【发布时间】:2021-09-23 10:41:50 【问题描述】:

有很多关于如何在 LibreOffice 中运行 Python 宏的信息,但我找不到任何关于如何记录 Python 宏的信息(有点像旧的 VBA 或 Excel 中的新 javascript macro recording)。 .. 我发现录制对于做非常基本的事情很有用,而无需检查 LO API,所以我想知道这是否可行以及如何实现。

【问题讨论】:

【参考方案1】:

LibreOffice 中的记录器在 Basic 中生成调度程序代码。这通常不是学习 Basic 或 Python 宏编程的好方法,但如果您试图避免编写代码并且不在乎它很麻烦,它可以处理一些任务。 (一些任务最好由调度员处理,例如复制和粘贴,但这与您的问题并不真正相关)。

好消息是调度程序代码可以很容易地翻译成 Python 等语言。所以你需要做的是:

    了解如何在 Python 中进行调度程序调用,例如 https://wiki.documentfoundation.org/Macros/Python_Guide/Useful_functions#Call_dispatch。 在 Basic 中录制宏。无论使用何种语言,UNO 调用都是相同的。 将调度程序调用转换为 Python 宏。例如,使用 Python 元组 () 代替 Basic Array()

或者,MRI 可以生成 Python-UNO 代码。详情在https://github.com/hanya/MRI/wiki/Code。这会生成比调度程序代码更好的 API 代码。然而 MRI 并不是真正的记录仪。相反,您必须选择 UNO 调用。

【讨论】:

不错的答案。还值得注意的是,调度记录器必须在 Tools...Options...LibreOffice...Advanced 中显式启用。

以上是关于你能在 LibreOffice 中用 Python 录制宏吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能在Vim中使用特定于文件类型的键绑定吗?

无法使 LibreOffice 在线构建

你能在 Java 中抛出啥?

你能在 SQL 中定义“文字”表吗?

你能在 ClutterStage 中嵌入 GtkWidgets 吗?

你能在 UIViewController 类中实现 Accessibility 方法吗?