700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > VBA连接Excel数据库

VBA连接Excel数据库

时间:2023-08-02 02:50:51

相关推荐

VBA连接Excel数据库

微信公众号原文

系统:Windows 7

软件:Excel

使用场景or困惑

本公众号的一些文章中是使用Access做数据库的,很多操作都是通过SQL实现的,对比传统方式,还是高效了很多那么如果只有Excel,能否实现Access那样的高效呢?也就是说将Excel作为数据库来操作

示例:Excel作为数据库,从Excel中获取来自于交通院,语文和数学成绩都是>80分的信息

实现结果

思考

传统方法:对数据表进行循环判断,找到满足条件的行新方法:查询通过一句SQL实现SQL = "Select " & filds & " From " & tbl_name & " Where (" & searchC & ")",逻辑过程如下:

连接数据库确定SQL语句执行SQL语句获取结果断开数据库

SQL

代码

过程main

Sub main()Dim dbAddrdbAddr = ThisWorkbook.Path & "\数据源.xlsx"Dim adConn As ADODB.Connection '连接Set adConn = New ADODB.ConnectionDim rs As ADODB.RecordsetSet rs = New ADODB.RecordsetDim SQL As StringDim fildsDim tbl_nameDim searchCadConn.Open "provider=Microsoft.ACE.OLEDB.12.0;" _& "extended properties=excel 12.0;" _& "data source=" & dbAddrfilds = "姓名,学院,语文,数学"tbl_name = "[data$]"Dim searchC1Dim searchC2Dim searchC3Dim sht_nameDim shtDim isearchC1 = "学院='交通院'"searchC2 = "语文>80"searchC3 = "数学>80"searchC = searchC1 & " and " & searchC2 & " and " & searchC3SQL = "Select " & filds & " From " & tbl_name & " Where (" & searchC & ")"Set rs = adConn.Execute(SQL)sht_name = "示例"Set sht = ThisWorkbook.Worksheets(sht_name)For i = 1 To rs.Fields.Count Step 1sht.Range("A1").Offset(0, i - 1) = rs.Fields(i - 1).Name '字段序号从0开始Next isht.Range("A2").CopyFromRecordset rssht.Cells.EntireColumn.AutoFit'关闭数据库adConn.CloseSet adConn = NothingEnd Sub

代码截图

部分代码解读

数据库连接

Excel连接

adConn.Open "provider=Microsoft.ACE.OLEDB.12.0;" _& "extended properties=excel 12.0;" _& "data source=" & dbAddr

Access连接

With adConn.Provider = "Microsoft.ACE.OLEDB.12.0;".Open "Data Source=" & dbAddrEnd With

工作表的表示方法tbl_name = "[data$]",使用[$]复制rs信息到工作表:sht.Range("A2").CopyFromRecordset rs

Ps

1)采用ADO的方式连接的数据库,需要人为先在VBE中打开这个引用,菜单工具-引用

2)当数据量越大,本文中采用的方式,效率越明显,所以是不错的方法幺

以上为本次的学习内容,下回见

更多精彩,请关注微信公众号

扫描二维码,关注本公众号

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。