龙空技术网

利用ADO连接EXCEL,提取固定位置(行或者单元格)的数据

VBA语言専攻 1374

前言:

如今同学们对“vb导入excel数据”大体比较重视,朋友们都想要了解一些“vb导入excel数据”的相关文章。那么小编也在网络上收集了一些有关“vb导入excel数据””的相关资讯,希望姐妹们能喜欢,你们快快来学习一下吧!

大家好,我们继续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 提取某行的内容?

标签: #vb导入excel数据