excel学习库

excel表格_excel函数公式大全_execl从入门到精通

EXCEL中多个工作表数据汇总的实现

大家好,今日我们继续讲解VBA数据库解决方案,今日讲解第35讲:利用ADO,实现EXCEL多个工作表数据的汇总。在前几讲中,我们讲了用ADO连接EXCEL实现一些便捷操作的方法,其实,这些操作中是把EXCEL作为一种特殊的数据库来对应的,我们在实际工作中面临的实际情况多种多样,要实现特殊的操作有时要组合利用一些基本的方法。 我们今日讲解的是利用ADO,实现EXCEL多个工作表数据的汇总,模拟的场景是某个工作薄中有若干个工作表,我们要把这些工作表的数据一次提取出来,放在当前的工作表内。如下面的截图;为文件“16年.xlsx” 的数据记录,一共有4个工作表,每个工作表中的记录各不相同: 为了实现各个工作表中的数据都汇总到同一个工作表中,我们看下面的代码: Sub mynzexcels_4() '第35讲,利用ADO,实现EXCEL多个工作表数据的汇总 Dim cnADO, rsADO As Object Dim strPath, strTable, strSQL As String Dim SH As Worksheet ThisWorkbook.ActiveSheet.Cells.Clear Set cnADO = CreateObject("ADODB.Connection") '建立连接 strPath = ThisWorkbook.Path & "\" & "16年.xlsx" Workbooks.Open strPath cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath For Each SH In Worksheets strTable = "[" & SH.Name & "$]" strSQL = "select * from " & strTable ThisWorkbook.ActiveSheet.Range("a65536").End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL) Next Workbooks("16年").Close cnADO.Close Set cnADO = Nothing End Sub 代码截图:代码讲解: 1 Workbooks.Open strPath 这里要打开这个文件,以便提取每个工作表的数据,如果不打开时下面的FOR EACH会报错。 2 strTable = "[" & SH.Name & "$]" strSQL = "select * from " & strTable 上述代码是嵌套在for each 循环中,先提取每个工作表的名字,然后建立SQL可执行的语句。 3 ThisWorkbook.ActiveSheet.Range("a65536").End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL) 将数据提取处来放到当前的工作表中,这处是执行了一个SQL语句。 4 Workbooks("16年").Close 关闭这个文件。这处可以用Workbooks("16年").Close(false),较好。 下面看我们代码的执行过程: 点击”多工作表的数据汇总”:这样就实现了我们的目的:多个工作表的数据汇总。 今日内容回向: 1 如何实现多个工作表的汇总? 2 为啥要先打开这个文件呢?

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接