2010-07-21 41 views
6

我试图编写我的OpenOffice文档(编写器在我的案例中)来使用小部件做一些简单的事情。也就是说,我想将文本从小部件复制到小部件。为此,我想获取一个组件并从中获取文本。使用VB或python编写OpenOffice Forms脚本

我一直试图做某事像这样:

document = ThisComponent.CurrentController.Frame 

oDocument  = ThisComponent 
oTextBoxFrom = document.getByName("Text Box 1") # 1 
oTextBoxFrom = oDocument.getByName("Text Box 1") # 2 

无论是形式#1#也不工作2。 VB编译器吐出“文本框1”不可访问,但我有我的表单中的组件。我的猜测是我试图从错误的地方得到这个组件,例如。不是它的框架。我只是无法弄清楚文档的结构。

这似乎是一个非常简单的任务,但是我无法找到任何OpenOffice规范来访问VB或Python中的OO UNO对象。

+0

什么版本的OpenOffice或LibreOffice使用? – 2012-06-01 09:55:46

回答

1

我没有使用openoffice脚本的经验,但我找到了这些示例,请注意,它们从不在文档本身上使用getByName,但始终在其某些部分使用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") 

你可以在http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf找到在这个大的PDF休息,这是在法国,但代码是通用的吧? 希望它有帮助..

2

美好的一天。

如果您选择使用VB,你必须知道这一点:

VBA: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 PATH。如同任何一个 所期望的那样,Python的任何发行版都可以从命令行运行 。如果您已经安装了单独的Python 2.6,则可以使用这些说明将uno模块(Python-UNO桥)导入到它。如果您已在Windows上安装了 不同版本的Python,则还可以使用COM桥而不是Python桥访问 UNO API。 需要附加pywin32模块,以便Python可以与COM通信。注意 虽然UNO API是统一的,但两个 网桥的实现略有不同,所以每个网络所需的语法也有所不同,其中 也有所不同。

Python UNO bridge

UPD:ooobloger可能会帮助您使用Python和UNO集成的理解。