打开APP
userphoto
未登录

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

开通VIP
如何在Excel中使用SQL语言?


这个问题,系列文的第1章咱们就讲过了,然而后台总是收到类似的提问,所以今天就再集中说一次。

一般有三种方法▼



第一种是MS Query法,很少用,越来越少用,略。



第二种是OLE DB法。

在Excel的【数据】选项卡下单击【现有链接】命令,在弹出的【现有链接】对话框中,单击【浏览更多】,选取目标文件后,依次单击【确定】,得到下面的【导入数据】对话框。


单击【属性】按钮,打开【连接属性】对话框,切换到【定义】选项卡,即可在【命令文本】编辑框中编写SQL语句,并【确定】执行。如下图所示。


这种方法通常搭配数据透视表(图一的显示方式选择【数据透视表】),此时SQL获取的记录集会自动成为透视表的缓存数据源。

此外也可以搭配Power Pivot(高级版本Excel(2013及以上)勾选图一的【将此数据添加到数据模型】)。

对于没有VBA基础的朋友来说,通常推荐这种方法,只要会写SQL查询语句,就可以直接使用了。

下面是一个操作过程示例动画:




咱们的系列文章【零基础学SQL in Excel教程合集】主要是使用的第3种方法,也就是VBA+ADO+SQL。

和第2种方法相比较,该法的优点在系列文里已经说过很多了,其实最重要的其实就两点,掰手指头,啊,我的手指头好白——想念故乡的雪。

1▼
借助VBA,SQL语句可以使用变量,更加灵活自由。

2▼
借助ADO,对数据,SQL除了查询以外,还可以增改删。

对于VBA代码连面都不熟的朋友而言,是不是就不能使用VBA执行SQL了呢?

并不是。

VBA执行SQL语句有一个固定的套路。

哪怕你连VBA代码一句都看不懂也没关系,只要知道如何复制运行VBA代码(如何运行VBA代码?其实很简单),以及知道在哪里写入SQL语句就可以了。

也就是下列代码第11行处。

代码如看不全,可以左右拖动..▼
Sub ByADO_SQL() Dim cnADO As Object Dim rsADO As Object Dim strSQL As String Dim i As Long Set cnADO = CreateObject('ADODB.Connection') Set rsADO = CreateObject('ADODB.Recordset') cnADO.Open 'Provider=Microsoft.ACE.OLEDB.12.0;' _ & 'Extended Properties=Excel 12.0;' _ & 'Data Source=' & ThisWorkbook.FullName strSQL = 'SELECT * FROM [A$] ' '//此处写入SQL代码 Set rsADO = cnADO.Execute(strSQL) Cells.ClearContents Range('A1').CopyFromRecordset rsADO rsADO.Close cnADO.Close Set cnADO = Nothing Set rsADO = NothingEnd Sub

小贴士▼

在以上VBA代码中输入的SQL语句,双引号应改为单引号,这是因为SQL语句作为字符串,外围已经存在一对双引号了。

当处理的文件跨工作薄时,SQL语句的书写和OLE DB法稍有不同,具体请参考:Excel VBA+ADO+SQL入门教程004:SQL中的Excel表

没了,晚安。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA数据库解决方案第41讲:工作表中存在的数据只要在数据表中没有,那么批量添加
VBA与数据库解决方案:Recordset记录集合的动态查询,并显示结果
利用VBA代码,在数据库中根据需要动态删除和建立数据表
工作表数据与UserForm窗口的交互:如何实现数据的精确查找
Excel VBA ADO SQL入门教程024:初识Recordset对象
Excel之VBA常用功能应用篇:VBA查询Access数据库操作方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服