如何从VBA访问SQLite?

时间:2009-08-28 13:30:31

标签: excel vba sqlite

我有一个Excel工作簿,其中包含一些查询本地访问数据库的adodb代码。我想为SQLite做同样的事情,因为我认为这将提供更好的性能。我怎么做?我可以使用adodb或odbc连接到SQLite文件吗?

我需要一些简单的东西,我可以部署,这样如果我可以最大限度地减少不必要的配置和安装,那么将使用excel的人将无法在PC上拥有管理员权限,因此他们无法安装软件。

5 个答案:

答案 0 :(得分:7)

面对同样的问题,我创建了一个轻量级库,可以直接从Excel VBA访问SQLite3。最终结果是一个更简单的解决方案,没有介入ODBC或OleDb / ADO层,性能反映了SQLite数据库性能,而不是不透明包装器的性能。它也很好,因为您不需要在注册表中注册COM组件,只需将两个.dll复制到您的工作簿中,并将.bas模块添加到您的项目中。

这种方法的一个缺点是API不是标准的DAO或ADO接口,因此您可能需要制作一些包装器,或转换一些代码以使其工作。这也意味着您需要熟悉SQLite API才能使用它,但SQLite文档非常清晰。

我已将该项目的早期版本放在CodePlex上:SQLite for Excel提供了SQLite3 API函数的高性能路径,保留了SQLite3库调用的语义,并允许访问分布式SQLite3.dll而无需重新编译。

非常感谢任何反馈。

更新: SQLite for Excel项目现在位于GitHub

答案 1 :(得分:3)

如何从here (original article in chinese)中的vba宏访问sqlite:

  

软件环境:

     

1)Win7(32位)2)Excel2007(带VBA功能)

     

步骤:

     

1)首先,   http://www.zsplat.pwp.blueyonder.co.uk/programming/sqlite-3.5.7-odbc-0.65.zip   下载并安装SQLite ODBC驱动程序。

     

注意:如果您使用Win7,那么您需要Adminitrator权限,   否则安装失败。最简单的步骤是使用   管理员登录,然后安装SQLite ODBC驱动程序。

     

2)打开Excel VBA代码编辑器窗口,菜单栏[工具] - >   [参考],添加Microsoft ActiveX Data Objects 2.7,目的是   使用VBA和数据库连接。

     

3)使用以下代码连接SQLite数据库:

Dim conn As New ADODB.Connection 
Dim dbName As String 

'Define the connection string 

dbName = "Driver = {SQLite3 ODBC Driver}; Database = D: \ yourdbname.db" 

'Open the database 

ff.Open dbName 

ff.Execute "create table a (a, b, c);" 

'Other operations on and VBA to connect to other DB like Access the same. 


'Close connection 
ff.Close 

答案 2 :(得分:2)

您可以使用一些DLL来使用adodb从Visual Basic访问SQLITE数据库。我认为here是您正在寻找的信息。我从来没有尝试过,但链接对你有用。

祝你好运。

答案 3 :(得分:2)

我使用了Datenhaus'dhSQLite并且效果很好。

答案 4 :(得分:0)

google sqliteforexcel并从github下载

govert已经(创建者)对此做出了回应,这是我的简单解决方案,除非您不能..不要使用Access。将数据传输到sqlite db文件。您甚至可以将ADO用于服务器或DAO,并将rs直接读取到sqlite表中

不需要驱动程序或安装。您可以让您的工作簿从文件打开的共享位置下载2个.dll(检查它们是否在文件系统上不存在,例如c:\ temp),然后用户正在运行sqlite。我怀疑,如果您很想问这个问题,那么您想编写一个函数来循环调用适当的sqlite函数(在示例文档中进行了说明),并将返回的数据读入vba数组。然后,您可以随心所欲地做任何事情。