大家好,今日继续讲解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 如果是多个计算结果该如何返回呢?