相同格式EXCEL汇总

以下VBA用以汇总相同格式的工作表.

Option Explicit
Sub Collection()
'Collection Data into TTL worksheet
Dim Sh As Worksheet, SQL$, m%, Conn As Object
Dim MaxClm&, TitleArr()
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Set Conn = CreateObject("adodb.connection")
Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;imex=1';data source=" & ActiveWorkbook.FullName
Application.ScreenUpdating = False  'Unable Screen Update
Application.DisplayAlerts = False   'No Alert for TTL sheet delete
For Each Sh In Sheets
   '查找现有WORKBOOK,如果已经有汇总表-TTL,删除
   If Sh.Name = "TTL" Then Sheets("TTL").Delete
Next
'增加新的汇总表-TTL
Set Sh = Sheets.Add(After:=Sheets(Sheets.Count))
Sh.Name = "TTL"
Application.DisplayAlerts = True    'Alert enable

With Sheets("TTL")
.UsedRange.ClearContents    'Clear data
MaxClm = Sheet1.[AX1].End(xlToLeft).Column  'Last column
'从SHEET1读入标题栏
TitleArr = Sheet1.Range("A1").Resize(1, MaxClm)
'循环SHEET
For Each Sh In Sheets
    If Sh.Name <> "TTL" Then
        m = m + 1
        If m = 1 Then
            SQL = "select '" & Sh.Name & "',* from [" & Sh.Name & "$A:J]"
        Else
            SQL = SQL & " union all select '" & Sh.Name & "',* from [" & Sh.Name & "$A:J]"
        End If
    End If
Next
SQL = "select * from (" & SQL & ") "
'执行QUERY
.Range("A2").CopyFromRecordset Conn.Execute(SQL)
'读入标题栏
.Cells(1, 1) = "WorkSheet"
.Range("B1").Resize(1, UBound(TitleArr, 2)) = TitleArr

'释放内存
Conn.Close: Set Conn = Nothing
'UpdateScreen
Application.ScreenUpdating = True
End With
End Sub


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值