代码之家  ›  专栏  ›  技术社区  ›  Marcin Cylke

用VB或python编写OpenOffice表单脚本

  •  6
  • Marcin Cylke  · 技术社区  · 15 年前

    我正在尝试编写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”是不可访问的,但是我的窗体中有这个组件。我的猜测是,我试图从一个错误的地方得到这个组件,例如,不是它的框架。我就是搞不懂文件的结构。

    这看起来是一个相当简单的任务,但是我找不到任何OpenOffice规范来从VB或python访问OO-UNO对象。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Dmitry Zagorulkin    13 年前

    很好的一天。

    如果您选择使用VB,您必须知道:

    VBA:之间的兼容性OpenOffice.org网站Basic和VBA与 这个OpenOffice.org网站基本语言以及运行库。这个 OpenOffice.org网站API和对话框编辑器与VBA不兼容 (标准化这些接口会使许多概念 提供于OpenOffice.org网站不可能)。

    python :

    OpenOffice.org网站3.1附带Python脚本语言版本 2.6.1. 较老的OpenOffice.org网站随Python 2.3.4版提供。这个Python发行版附带了连接Uno的Uno模块 python脚本语言的API。在上运行此版本的Python Linux,你可以直接去OpenOffice.org网站路径。作为一个整体 任何Python发行版都可以运行OOo Python 2.6安装时,可以使用以下说明将uno模块(Python uno桥)导入其中。如果你已经有了 unoapi使用COM桥而不是Python桥。 虽然unoapi是统一的,但是两者的实现 有时不同。

    Python UNO bridge

    升级版本: ooobloger 可能有助于您理解python和uno集成。

        2
  •  1
  •   peter    13 年前

    我没有使用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")
    

    你可以在这个大pdf里找到剩下的 http://oqei.free.fr/echange/VBA/Programmation_OpenOffice_org_3_ed1_v1.pdf 希望有帮助。。

    推荐文章