大家好,今日繼續講解VBA資料庫解決方案的第34講,這講的內容是利用ADO連接EXCEL,並進行數據運算。為什麼要講解這講的內容呢?因為我們在實際的工作中,往往需要的是連接上EXCEL後提取的數據並不是原始的數據所直接給出的,往往要進行一些簡單的運算,而我們所關心的其實只是運算後的結果,不關心運算的過程。
那麼,在使用ADO連接上EXCEL後,如何讓數據參與運算並返回我們所需要的值呢?今日我們就來講解這個內容。
實例: 15年.xlsx 文件中的第二頁中有銷售數量和銷售單價兩個數值,我們要提取的值是兩者的乘積,如下截圖
我們看代碼:
Sub mynzexcels_3()
'第34講,利用ADO,實現EXCEL工作表某兩列數據的數據計算
Dim cnADO, rsADO As Object
Dim strPath, strTable, strSQL As String
Set cnADO = CreateObject("ADODB.Connection")
strPath = ThisWorkbook.Path & "\" & "15年.xlsx"
strTable = "[sheet2$a2:b2]"
'建立連接,提取A2B2單元格的數據
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath
strSQL = "select F1*F2 from " & strTable
Cells.Clear
[a1].CopyFromRecordset cnADO.Execute(strSQL)
cnADO.Close
Set cnADO = Nothing
End Sub
代碼截圖:
代碼講解:
1 strTable = "[sheet2$a2:b2]" 此處定義了數據表的範圍為[sheet2] 工作表的A2到B2的單元格
2 strSQL = "select F1*F2 from " & strTable 此處直接定義了F1 和F2 相乘
3 [a1].CopyFromRecordset cnADO.Execute(strSQL) 最後將所得的值放在A1 單元格。
下面我們運行一下程序:
這樣就實現了我們的目的,在連接EXCEL的同時進行數據的計算,並返回計算的結果。當然,我這裡只是給出了一個最為簡單的例子,在實際工作中實際問題要遠遠比這個要複雜,但只要你掌握到了基本的方法,是能夠處理複雜問題的。
今日內容回向:
1 如何實現在連接EXCEL的同時實現數據的計算?
2 如果是多個計算結果該如何返回呢?