网站首页 极客学院 视频课堂 极客论坛 下载专区 行业新闻 欢迎光临极客研究院,今天是2019-08-24 星期六
会员面板
帐号:
密码:
验证码:
极客学院
教程搜索
输入要搜索的内容:

下载专区
精品教程
   网站首页 > 办公软件教程 > Excel宏编程教程 > VBA用SQL查询当前工作表的数据

VBA用SQL查询当前工作表的数据

利用VBA,可以把工作表当作一个数据库表来使用,也像连接其它SQL数据库一样,利用connection和RecordSet对象来实现


假如有个工作簿,里面sheet2工作表内空如下:

教程原创:王颂元  http://http://www.kimgeek.com

使用SQL查询范例:

    Dim ConnStr As String

    ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes'Data Source =" & ThisWorkbook.FullName   
    Set conn = CreateObject("adodb.connection")
    conn.Open ConnStr
    
    Sql = "select * from [Sheet2$]"              '指定查询的工作表名,假如这个sheet2已经存在记录数据(二维表形式,第一行为表头字段名)

    Set rs = conn.Execute(Sql)


     Do While Not rs.EOF
      MsgBox (rs("sname"))         'sname为其中一个字段名称
      rs.MoveNext
     Loop
     
     rs.MoveFirst
     Sheets("Sheet1").Select
     Sheets("Sheet1").Cells.Clear
     Range("C5").CopyFromRecordset rs      '直接把查询到的记录放到指定的工作表(以二维表形式展示)

     rs.Close

     conn.Close

==================================================

上面有几个地方要注意的:

ThisWorkbook.FullName  得到当前工作簿的完整路径

Range("C5").CopyFromRecordset rs  表示从RecordSet对象复制数据到指定单元格,注意,此方法调用之后rs的指针会跑到最后一条。如果后面要继续使用这个rs,记得要rs.MoveFirst

connection对象用完记得 close


  相关文章
本文标题:VBA用SQL查询当前工作表的数据
对本文有疑问?现在就进入论坛提问>>
 
粤ICP备18090445号