分享

提取固定位置(行或者单元格)数据的方法

 昵称38017100 2019-07-03

大家好,我们继续VBA数据库解决方案的学习,今天讲解第33讲:利用ADO连接EXCEL,提取固定位置(行或者单元格)的数据。在上一讲中我们学习了ADO连接EXCEL后,实现提取列数据的方法,但很多的时候,必要的数据并不是在整列中的,也有可能在行或者某单元格的固定位置,这个时候要如何处理呢?这个内容就是我今天要讲解的内容。

实例:我们要统计的数据资料如下截图的数据:

提取固定位置(行或者单元格)数据的方法

要把某个工作薄中固定工作表内的B1单元格及第2行中A2到AC2中的数据提取出来放到当前的工作表内的cells(18,1)和第19行内。

相信大家一看上面的例子就清楚了,如果结合上一讲的内容就可以实现多个工作表数据的提取了,那么代码怎么写呢?看下面的代码:

Sub mynzexcels_2()

'第33讲,利用ADO,实现EXCEL工作表某行或者某单元格的数据提取

Dim cnADO, rsADO As Object

Dim strPath, strTable, strSQL As String

Set cnADO = CreateObject('ADODB.Connection')

Rows('18:18').Clear

Rows('19:19').Clear

strPath = ThisWorkbook.Path & '\' & '15年.xlsx'

strTable = '[sheet1$B1:B1]'

'建立连接,提取B1单元格的数据

cnADO.Open 'provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no; imex=1';data source=' & strPath

strSQL = 'select * from ' & strTable

Cells(18, 1).CopyFromRecordset cnADO.Execute(strSQL)

'提取A2:AO2的数据

strTable = '[sheet1$A2:AO2]'

strSQL = 'select * from ' & strTable

Cells(19, 1).CopyFromRecordset cnADO.Execute(strSQL)

cnADO.Close

Set cnADO = Nothing

End Sub

代码截图:

提取固定位置(行或者单元格)数据的方法

代码的讲解:

如上面绿色的框框:分别准备了B1单元格和A2:AO2单元格数据的提取的命令代码。然后在cnADO.Execute(strSQL) 中将执行代码。

在上面的代码中还用到了ADO对EXCEL的连接:provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=' & strPath 这是连接excel 2007 后的专用代码,大家一定要记入自己的资料库中,有的朋友会问如何连接低版本的呢?您可以在《VBA数据库解决方案》中得到答案。

通过上一讲和这讲知识的讲解,我们可以非常方便的利用ADO连接多个EXCEL文件从里面提取数据,如果我们的数据在多个EXCEL中的位置如果是固定的,那么很容易会形成我们需要的新文件,就是这样的一个思路,可以大幅的提高我们的工作效率,而我们只需的是告诉计算机如何去执行我们的命令,我们的命令是靠VBA代码下达的,VBA代码是我们的有效手段。

好了下面看我们的代码执行情况。点击下面的'EXCEL中行或者单元格拷贝数据'按钮:

提取固定位置(行或者单元格)数据的方法

在当前的工作表中将会提取到15年.xlsx文件下的数据:

提取固定位置(行或者单元格)数据的方法

当然,上面的例子中我只是列举了从一个文件中提取数据的方案,如何从多个工作薄中提取数据呢?只要我们和上一讲一样做一个数组就可以实现了,数组的数据,我们也可以在当前的工作表中实现。

今日内容回向:

1 如何用ADO 连接EXCEL 提取某个单元格的内容?

2 如何用ADO 连接EXCEL 提取某行的内容?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多