在 MS Excel 中,通过 VBA,可以像数据表一样使用 SQL 查询一系列单元格(使用 ActiveX 组件)。
假设数据存储在“Sheet1”中的“A1:C10”范围内。通过 VBA,我们可以使用连接、记录集和 SQL 从此范围中选择所需的数据,然后将结果放入同一文件的任何电子表格中(或其他任何地方)。
是否可以使用 Stabasic 宏在不使用 Base 的情况下对 OpenOffice/LibreOffice Calc 执行相同的操作?我想保留一个启用宏和 SQL 查询的简单 ODS 文件,而不使用任何 ODB 文件。有很多关于如何将电子表格引用为数据库并将其与 Base 一起使用的示例,但没有像我正在寻找的那样。
到目前为止,我不知道该怎么做,或者是否可能。
问候。
是的,可以,但是您必须首先将文件注册为 OO/LO 中的数据库。最好的方法是:
以下是查询 Sheet1 前 2 列的示例基本代码。您确实需要将“CalcFile”替换为您的 Calc 文件的注册名称。
Sub QueryData
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Conn As Object
Dim InteractionHandler as Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("CalcFile")
If Not DataSource.IsPasswordRequired Then
Conn = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Conn = DataSource.ConnectWithCompletion(InteractionHandler)
End If
Stmt=Conn.createStatement()
REM create an SQL command
strSQL="SELECT * FROM SHEET1"
REM finally, execute and store results in ResultSet Object
Result=Stmt.executeQuery(strSQL)
While Result.next()
REM for now, let us just use the getString() method to get the
REM columns. Note that they are being accessed by index
MsgBox (Result.getString(1) & " " & Result.getString(1))
Wend
Conn.close()
End Sub
该代码基于 PDF:Roberto C. Benitez 的“Database Development - OpenOffice.org & OOBasic”,但我现在找不到它的链接。
类似信息位于: 打开 Office Wiki - 数据库访问