發布時間:2024-01-24閱讀(11)
【分享成果,隨喜正能量】珍惜自己生活當中的一點一滴,好好積攢自己的福,不貪婪,不消耗,懂得惜福,才是大智慧。
《VBA數據庫解決方案》教程是我推出的第二套教程,目前已經是第一版修訂了。這套教程定位于中級,是學完字典后的另一個專題講解。數據庫是數據處理的利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,教程第一版的修訂內容主要是完成所有程序文件的32位和64位OFFICE系統測試。
這套教程共兩冊,八十四講,今后一段時間會給大家陸續推出修訂后的教程內容。今日的內容是第32講:ADO提取多個EXCEL工作表數據

大家好,今日講解VBA數據庫解決方案的第32講,利用ADO,秒殺實現多個EXCEL工作表的數據的提取。我曾經講過:學以致用,如果我們學習了,沒有利用,那么知識永遠是知識,無法轉換為我們實際的成果。所以我的資料中無論是《VBA代碼解決方案》還是《VBA數據庫解決方案》都在力求實用,把學到的知識放在實用之中。
到今天這講,我們講了30余講的數據庫相關的知識,大家一定對于連接,打開數據庫不陌生了,今日我們給大家講解利用ADO連接到EXCEL的方法,從而實現多個EXCEL數據匯總到一個文件中的方法。這講的作用非常大,可以給很多的數據統計人員打開思路,工作中還望多多利用。
1 應用場景的具體分析實例:我們有三個EXCEL數據表格,文件是07版本的,記錄的是16年到18年的某項數據記錄,我們要把這些數據表A列除去第一行的數據匯總到當前的同一個EXCEL表格中,同時把第一行的數據換成16年、17年、18年。估計大家看到我的這個實例,會聯想到很多自己工作中的例子吧,我給出的這個三個源數據的文件及內容如下:

16年數據:

17年數據:

18年數據:

要實現我們的目的,如果按照正常的VBA操作,我們要逐個打開這三個文件,然后利用循環語句,把這些數據提取處理,這樣的處理當然可以,我們今天要講的是利用ADO實現我們的目的。
2 實現多個EXCEL工作表的數據提取的代碼及代碼分析代碼如下:
Sub mynz_32() 第32講,利用ADO,秒殺實現多個EXCEL工作表的數據提取
[代碼見教程]
End Sub
代碼截圖:

代碼講解:
1)
arr = Array("16年", "17年", "18年") 建立一個數組用來放三個文件的名字
2)
For i = 0 To UBound(arr)
strPath = ThisWorkbook.Path & "" & arr(i) & ".xlsx"
strTable = "[sheet1$]"
建立連接
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties=excel 8.0;hdr=no;imex=1;data source=" & strPath
strSQL = "select F1,F2,F3,F4,F5 from " & strTable
Cells(t, 1).CopyFromRecordset cnADO.Execute(strSQL)
cnADO.Close
Next i
先后建立三次連接,連接到這三個EXCEL文件。其中Cells(i, 1).CopyFromRecordset cnADO.Execute(strSQL) 語句是拷貝出數據,strSQL = "select F1,F2,F3,F4,F5 from " & strTable 是指從工作表中取的是第A,B,C,D,E列的數據。
下面看代碼的執行:

今日內容回向:
1 如何處理多工作表的數據匯總?
2 ADO如何連接到EXCEL文件?
本講內容參考程序文件:VBA與數據庫操作(第一冊).xlsm

我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中:

【分享成果,隨喜正能量】不為迎合他人,去做自己不喜歡做的事,選擇一種既不用違背本心、降低人格去刻意討好,又讓人覺得舒服、容易接受的社交風格。為了迎合別人而違背自己本心的社交關系,往往是難以維系的。
歡迎分享轉載→http://www.avcorse.com/read-226101.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖