分享

Excel | 如何用VBA SQL筛选多个工作表的数据? | VBA,SQL,筛选,数据

 L罗乐 2019-07-16

免责声明:本文来源于网络,版权归原创作者所有,如有侵权,请联系删除。

学习一下版主的代码,把字段名也用代码加入
Sub a()
    Range('A1:L1000').ClearContents    '清空A2:L1000区域的数据
    Set Conn = CreateObject('adodb.connection')    '创建ADO链接方式
    Set rs = CreateObject('adodb.recordset')
    Conn.Open 'provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=' & ThisWorkbook.FullName    '打开数据源链接
    For i = 1 To Sheets.Count - 1    '循环第一个到倒数第二个工作表
        Sq = Sq & 'select * from [' & Sheets(i).Name & '$] where 积分 > 10 ' & ' union all '    '每个数据表的符合积分大于10分的数据都进行连接起来
    Next i
    Sq = Left(Sq, Len(Sq) - 11)    '因为循环倒数第二个工作表时,sq语句最后还是链接到 union all ,一共有11个字符,这时要提取sq字符串中不包含最后11个字符的字符串
    Set rs = Conn.Execute(Sq)
    For i = 1 To rs.Fields.Count                              '把选取的字段名写到表格
        Sheets('查询').[a1].Cells(1, i) = rs.Fields(i - 1).Name
    Next
    Sheets('查询').[A2].CopyFromRecordset rs    '在A2执行该SQL语句,并且使用了CopyFromRecordset执行方法
    Conn.Close
    Set Conn = Nothing
End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多