打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL语句应用基础 | VBA实例教程

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www.zhanzhanrufeng.com/cat4/333.html,VBA交流群273624828。

今天开始我们陆续分享一些Excel VBA操作数据库的实例,要了解这方面的知识首先要对SQL语句有一定的了解,这方面的教程很多,我这里就不再详细介绍。用VBA从数据库中取数据一般有以下几个步骤。首先要建立一个adodb.connection对象,之后就要打开我们指定的那个数据库了,需要指定一些参数,像Provider,Extended Property,Data Source等等,这些参数具体是什么意思可以百度,我也没研究过,一般来说我们不必深究,只是Data Source需要我们改成要访问的地址即可。打开指定的数据库之后下面就要设定SQL语句了,就是告诉程序我们要按一个什么样的规则来取数据,指定完规则之后就是执行这个规则,这样我们就取到相应的数据了。最后一步就是将取到的数据拿出来,这样就完成我们的目的了。

对于不同的数据库有不同的连接方式,这里我们以Excel数据库为例先来简单的看下上面我们所说的步骤。现在我有一个从网上抓取的股票数据,放在一个单独的Excel中,我要从该Excel中取出所有的数据到当前的Excel中,看下面的代码

Sub search1()
'查询表格中所有字段的记录
'前期引用 microsoft activex data objects 2.8 library
Dim cnn As Object, sql$, rs As Object, i
Set cnn = CreateObject('adodb.connection')             '建立连接对象
cnn.Open 'Provider=Microsoft.jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=' & ThisWorkbook.Path & '/原文件.xls'        '打开数据库,适合2007以前版本
'cnn.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=excel 12.0;Data Source=' & ThisWorkbook.Path & '/原文件.xls'     '适合2007及以后版本
'cnstring='Provider=Microsoft.jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=' & ThisWorkbook.Path & '/原文件.xls'
'cnn.connectionstring=cnstring
'cnn.open
sql = 'select *  from [Sheet1$]'                'SQL规则
Range('a1').CurrentRegion.ClearContents
Set rs = cnn.Execute(sql)              '执行SQL语句
For i = 0 To rs.fields.Count - 1            '取表头
Cells(1, i 1) = rs.fields(i).Name
Next
Range('a2').CopyFromRecordset rs           '复制数据
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

我们先创建了一个adodb.connection对象,当然也可以前期引用,这样可以直接定义相关对象了。连接Excel数据库的方式是'Provider=Microsoft.jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=' & ThisWorkbook.Path & '/原文件.xls' ,适用Excel 2007以前版本,只需要将Data Source变一下就可以了,2007及以后的方式是cnn.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=excel 12.0;Data Source=' & ThisWorkbook.Path & '/原文件.xls'。SQL语句基本格式就是Select...from...,意思就是从某处选择某些东西,后面还可以加一些规则,上面的例子表示从打开的Sheet1表中取所有的数据,*通配符,代表所有数据。执行SQL语句Set rs = cnn.Execute(sql),所得的数据放在rs中,rs就是一个数据集,rs的每一列就是一个字段,rs.fields(0)代表第一个字段,rs.fields(0).name代表第一个字段的名字,就是表头了。CopyFromRecordset rs将rs数据集中的所有数据都复制出来。cnn.Close关闭连接。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
分享] 在EXCEL中使用SQL语句查询集锦-持续更新中,敬请关注
Excel | 如何运用VBA+ADO使EXCEL和ACCESS进行数据交互 | ADO,ACCESS,数据交互,EXCEL,VBA
EXCEL(VBA)~SQL 经典写法范本汇集(四)[Access软件网]
Excel VBA ADO SQL入门教程002:简单认识ADO
VBA
VBA和SQL相结合,感觉走上了数据处理的巅峰之路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服