快好知 kuaihz

如何在Excel中使用SQL语言?

……

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

一般有三种方法。

一种是MS Query法,不常用,省略。

一种是OLE DB法。具体过程是,单击Excel【数据】选项卡下的【现有链接】,在弹出的【现有链接】对话框中,单击【浏览更多】,选取目标文件后,依次【确定】,得到下面的【导入数据】对话框。

图一

然后单击【属性】按钮,得到【连接属性】对话框,再单击【定义(D)】选项卡,即可在【命令文本】编辑框中输入SQL语句,并【确定】执行。如下图所示。

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

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

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

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

……

……

我们分享的系列文章主要是使用的第3种方法,也就是VBA ADO SQL。

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

1,借助VBA,SQL语句可以使用变量等。

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

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

并不是。

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

哪怕你连VBA代码一句都看不懂也没关系,只要知道在哪里写入SQL语句就可以了。

也就是下列代码字体加粗的部分。

代码如下:

Sub DoSql_Execute()

    Dim cnn As Object, rst As Object

    Dim Mypath As String, Str_cnn As String, Sql As String

    Dim i As Long

    Set cnn = CreateObject("adodb.connection")

    Mypath = ThisWorkbook.FullName

    If Application.Version < 12 Then

        Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath

    Else

        Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath

    End If

    cnn.Open Str_cnn

    Sql = "SELECT * FROM [学生表$]"              "//请在此处写入你的SQL代码

    Set rst = cnn.Execute(Sql)

    Cells.ClearContents

    For i = 0 To rst.Fields.Count - 1

        Cells(1, i 1) = rst.Fields(i).Name

    Next

    Range("a2").CopyFromRecordset rst "

    cnn.Close

    Set cnn = Nothing

End Sub

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:语言  语言词条  使用  使用词条  如何  如何词条  Excel  Excel词条  SQL  SQL词条  
办公

 word图文排版技巧:图片移不动...

编按:图文排版是文档排版的一大难点,每次在Word中插入图片后,发现图片无法移动。而且图片一多时,就更是难办,这可难倒了不少人?怎么办呢?只要你学会本文中的几个...(展开)