前言:
如今同学们对“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数据