Vba+Sql匯總多工作簿多工作表

Sub 多工作簿工作表匯總()

? ? Dim Cnn As Object, Rst As Object, Rs As Object, FilePath$, FullName$, FullPath$, Sql$, Sht_Name$, i&

? ? Set Cnn = CreateObject("ADODB.Connection")

? ? Set Rst = CreateObject("ADODB.Recordset")

? ? FilePath = ThisWorkbook.Path

? ? FullName = Dir(FilePath & "\*.xls*")

? ? Do While FullName <> ""

? ? ? ? If FullName <> ThisWorkbook.Name Then

? ? ? ? ? ? FullPath = FilePath & "\" & FullName

? ? ? ? ? ? Cnn.Open "Provider=Microsoft.Ace.Oledb.12.0;Extended Properties=Excel 12.0;Data Source=" & FullPath

? ? ? ? ? ? Set Rst = Cnn.OpenSchema(20)

? ? ? ? ? ? Do Until Rst.EOF

? ? ? ? ? ? ? ? Sht_Name = Rst("TABLE_NAME").Value

? ? ? ? ? ? ? ? If Sql = "" Then

? ? ? ? ? ? ? ? ? ? Sql = "select * from [" & FullPath & "].[" & Sht_Name & "]"

? ? ? ? ? ? ? ? Else

? ? ? ? ? ? ? ? ? ? Sql = Sql & " Union all select * from [" & FullPath & "].[" & Sht_Name & "]"

? ? ? ? ? ? ? ? End If

? ? ? ? ? ? ? ? Rst.MoveNext

? ? ? ? ? ? Loop

? ? ? ? ? ? Rst.Close

? ? ? ? ? ? Cnn.Close

? ? ? ? End If

? ? ? ? FullName = Dir

? ? Loop

? ? Cnn.Open "Provider=Microsoft.Ace.Oledb.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName

? ? Set Rs = Cnn.Execute(Sql)

? ? For i = 0 To Rs.Fields.Count - 1

? ? ? ? Cells(1, i + 1).Value = Rs.Fields(i).Name

? ? Next i

? ? [a2].CopyFromRecordset Rs

? ? Cnn.Close

? ? Set Rs = Nothing

? ? Set Rst = Nothing

? ? Set Cnn = Nothing

End Sub

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容