如何从 Office VBA 与 Libre Sheet 交互

Posted

技术标签:

【中文标题】如何从 Office VBA 与 Libre Sheet 交互【英文标题】:How to interact from Office VBA with a Libre Sheet 【发布时间】:2021-11-11 11:23:18 【问题描述】:

如何将 LibreOfficeCalcPortable.exe 作为对象获取以与 Catia VBA 进行交互。我在下面写了从 Catia VBA 与 MS Excel 交互的方式。如何在来自 CATIA VBA 的 LibreOfficeCalcPortable.exe 的单元格中写入?

Catia 到 Excel 的示例。

Dim Excel As Object

On Error Resume Next
Set Excel = GetObject(, "EXCEL.Application")
If Err.Number <> 0 Then
Err.Clear
Set Excel = CreateObject("Excel.Application")
End If

谢谢!

【问题讨论】:

是什么让您认为这是可能的?你在 Catia 的文档中找到了什么吗?您对 LibreOffice 和 VBA 的网络研究发现了什么? 您熟悉 LibreOffice/OpenOffice 使用的语言吗?自动化的方式完全不同。请查看here 以查看示例。他们基本上专注于VBScript,但从一开始就删除Wscript.,代码可以在VBA环境中使用。它将创建一个 Writer 文档并在其中执行一些操作。最后是一个指向WriterDemo.vbs的链接,它将打开脚本代码。可以在 VBA 中复制,按照我之前的建议,在 createStruct 函数中添加另一个参数。 代码是为 OpenOffice 设计的。我只听说它类似于 LibreOffice……几年前我在 OpenOffice 中进行了一些自动化操作,但从未在 LibreOffice 中进行过。 使用 Libre Office 代替 Excel 的限制是否与它是免费应用程序有关?如果是的话,我有一个客户的类似要求,我选择了 OpenOffice。如果是这种情况,可以发布一段代码检查是否安装了 OpenOffice,在其 'calc' 应用程序中打开一个 '.ods' 文件并将其保存为 '.csv' 逗号分隔。我有另一个从“ods”文件范围中提取一个数组。我为 Cored 创建了一个应用程序,它需要更多的输入方式(条形码、xls 文件、ods 文件、txt 文件等)。 【参考方案1】:

这是我刚刚在 LibreOffice 7.2 中测试的 VBScript 中的 Calc 示例。请参阅@FaneDuru 关于如何适应 VBA 的评论。

Set oSM = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
Dim arg()
Set wb = oDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, arg)
Set oSheet = wb.CurrentController.ActiveSheet
oSheet.getCellByPosition(1, 2).String = "Hello world!"
MsgBox "The End"

【讨论】:

以上是关于如何从 Office VBA 与 Libre Sheet 交互的主要内容,如果未能解决你的问题,请参考以下文章

Libre Office,清理范围

如何在 libre office basic 中使用模块?

如何使用 bash 脚本从许多 excel/Libre Office Calc 表中提取数据?

Libre Office Calc 与 Excel

[Libre|Open]Office 中当前文档的路径

Libre Office,一个集美貌与才华于一身的软件