Excel VBA 5.22 不打开工作簿也可以合并数据

前景提要

要进行工作簿数据的合并,常规操作第一步都是去打开工作簿,这个一点都没有问题

在之前学习工作簿的合并的时候,我们也是经常这样操作,惯用的代码就是workbook.open

但是打开工作簿也有一个弊端,那就是会花费时间去等待工作簿的打开

比方说上面这个图片,你可能要花点时间去等待他的启动,这就会浪费我们不少的时间

如果能够跳过这个过程,那执行整个程序的速度就会快上很多

那么如何跳过呢?

这就是我们今天的重点了

场景说明

这是我们今天的工作场景,我们需要将当前文件夹内所有的工作簿中,姓名为A1的人的成绩全部汇总到一个工作簿中

当然还是在不打开工作簿的前提下来完成的,那么如何实现这样的效果呢

这里我们会接触到一个新知识点,就是SQL

代码区

Sub tssss()

Dim sth As Worksheet, sql As String

Set sth = ActiveSheet

Set conn = CreateObject("adodb.connection") '创建ado对象

Set Rst = CreateObject("ADODB.recordset") '创建记录集

pathn = ThisWorkbook.Path

f = Dir(pathn & "\")

Do While f <> ""

l = Cells(Rows.Count, 1).End(xlUp).Row

If f <> "5-22.xlsm" Then

k = k + 1

sql = "Select * from [Sheet1$] Where 姓名= 'A1'"

With ActiveSheet

conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.Path & "/" & f

Set Rst = conn.Execute(sql)

If k = 1 Then

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

.Cells(1, i + 1) = Rst.Fields(i).Name

Next i

.Cells(2, 1).CopyFromRecordset conn.Execute(sql)

Else

.Cells(l + 1, 1).CopyFromRecordset conn.Execute(sql)

打开APP阅读更多精彩内容