用VB或Python编写OpenOffice表单脚本
我正在尝试给我的OpenOffice文档(在我的情况下是Writer)写一些脚本,想用小部件做一些简单的事情。具体来说,我想把文本从一个小部件复制到另一个小部件。为此,我想先获取一个组件,然后从中获取文本。
我试过这样做:
document = ThisComponent.CurrentController.Frame
oDocument = ThisComponent
oTextBoxFrom = document.getByName("Text Box 1") # 1
oTextBoxFrom = oDocument.getByName("Text Box 1") # 2
但是无论是版本#1还是版本#2都不行。VB编译器提示“文本框1”无法访问,尽管我在我的表单中确实有这个组件。我猜我可能是从错误的地方获取这个组件,比如不是从它的框架中。我就是搞不清楚文档的结构是怎样的。
这看起来是个很简单的任务,但我找不到任何关于如何从VB或Python访问OpenOffice UNO对象的说明。
2 个回答
我对OpenOffice脚本没有经验,但我找到了这些例子。注意,他们从来没有在文档本身上使用getByName,而是总是在文档的某个部分上使用。
docCalc = ThisComponent
maFeuille = docCalc.Sheets.getByName("leCSV")
....
for f = 0 to lesFamilles.Count -1' chaque famille
nomFam = lesFamilles.ElementNames(f)
uneFamille = lesFamilles.getByName(nomFam)
...
monDocument.TextTables.hasByName("Finances")
...
lesSections = monDocument.TextSections
sectA = lesSections.getByName("Aline")
你可以在这个大PDF里找到其余的内容,链接是 http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf,虽然是法语的,但代码是通用的,对吧?希望这对你有帮助。
大家好。
如果你选择使用VB(Visual Basic),你需要知道这些:
VBA(Visual Basic for Applications):OpenOffice.org Basic和VBA之间的兼容性涉及到OpenOffice.org Basic语言和运行时库。OpenOffice.org的API和对话框编辑器与VBA不兼容(如果这些接口能够标准化,OpenOffice.org中的许多概念就无法实现了)。
如果你选择使用Python:
OpenOffice.org 3.1自带Python脚本语言,版本是2.6.1。较早的OpenOffice.org版本则是Python 2.3.4。这个Python版本包含了Uno模块,它可以将UNO API与Python脚本语言连接起来。在Linux上运行这个版本的Python,你可以直接进入OpenOffice.org的路径。和其他Python版本一样,OOo-Python也可以通过命令行运行。如果你已经安装了单独的Python 2.6版本,可以按照这些说明将uno模块(Python-UNO桥接)导入进去。如果你在Windows上安装了不同版本的Python,也可以通过COM桥接来访问UNO API,而不是使用Python桥接。这样做需要额外的pywin32模块,以便Python能够与COM进行通信。需要注意的是,虽然UNO API是统一的,但这两个桥接的实现方式略有不同,因此每个桥接所需的语法有时也会不同。
更新:oooblogger可能会帮助你理解Python和UNO的集成。