你能在 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 录制宏吗?的主要内容,如果未能解决你的问题,请参考以下文章