我有一个Excel工作簿,其中包含一些查询本地访问数据库的adodb代码。我想为SQLite做同样的事情,因为我认为这将提供更好的性能。我怎么做?我可以使用adodb或odbc连接到SQLite文件吗?
我需要一些简单的东西,我可以部署,这样如果我可以最大限度地减少不必要的配置和安装,那么将使用excel的人将无法在PC上拥有管理员权限,因此他们无法安装软件。
答案 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数组。然后,您可以随心所欲地做任何事情。