2009-08-28 977 views
9

我有一个Excel工作簿,它有一些查询本地访问数据库的adodb代码。我想为SQLite做同样的事情,因为我相信这会提供更好的性能。我怎么做?我可以使用adodb或odbc连接到SQLite文件吗?如何从VBA访问SQLite?

我需要的东西很简单,我可以部署,以便如果我可以尽量减少不必要的配置和安装也许peoople将使用excel将不具有PC上的管理员权限,因此他们无法安装软件。

回答

2

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

祝你好运。

2

我用过Datenhaus'dhSQLite,效果很好。

6

面对同样的问题,我创建了一个轻量级库,可以直接从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

2

如何从here (original article in chinese)访问来自VBA宏源码:

软件环境:

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,则需要管理员权限,否则安装将失败 。最简单的步骤是使用管理员登录名 ,然后安装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