利用ADO+SQL处理工作表数据

职场菊菊子 2024-03-07 03:33:08

当Excel工作表数据为标准结构的时候,也就是没有重复标题,无合并单元格,一行为一条数据,一列为一个字段时,这时候可以把工作表数据看成是一个小型的数据库,使用ADO+SQL对工作表进行高效处理,性能更好。

引用ADO对象库

利用ADO+SQL对工作表数据进行处理之前,首先要引用ADO对象库“Microsoft ActiveX Data Objects Recordset 6.x Library”,这里的x表示ADO版本。

引用方法:在VBA窗口中,执行“工具”->“引用”命令,选择对应的ADO版本即可。

连接数据库

创建ADODB.Connection,需要指定Provider和ConnectionString。以下写法可以在低版本Excel和WPS使用,Excel为xls格式。

'' 创建连接'Function getConn(ByVal dbFullName As String) As ADODB.Connection Dim conn As New ADODB.Connection With conn .Provider = "Microsoft.JET.OLEDB.4.0" .ConnectionString = "Extended Properties=Excel 8.0;Data Source=" & dbFullName .Open End With Set getConn = connEnd Function数据查询

连接数据后,通过ADODB.Recordset指定SQL语句进行查询,这里需要懂一些SQL。查询结果输出到Excel。

'' 读取数据'Sub operateByDB() Dim conn As ADODB.Connection, rs As ADODB.Recordset Dim dbPath As String, sql As String, ttlRows As Long Dim sht As Worksheet ' 连接 dbName = ThisWorkbook.Path & "\data.xls" Set conn = getConn(dbName) ' 查询 Set rs = New ADODB.Recordset sql = "select * from [银行表$]" rs.Open sql, conn, adOpenKeyset, adLockOptimistic ttlRows = rs.RecordCount If ttlRows = 0 Then MsgBoxEx "查询到" & ttlRows & "条记录", 1000 Else MsgBoxEx "查不到记录", 1000 Exit Sub End If ' 输出 Set sht = Worksheets.Add For i = 0 To rs.Fields.Count - 1 sht.Cells(1, i + 1).value = rs.Fields(i).Name Next sht.Range("A2").CopyFromRecordset rs MsgBoxEx "输出完毕"End Sub
0 阅读:0

职场菊菊子

简介:感谢大家的关注