问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VBA汇总统一文件夹下的多个表格的数据?

发布网友 发布时间:2022-04-23 06:08

我来回答

3个回答

热心网友 时间:2023-10-23 13:44

大家好,今天继续讲解《VBA数据库解决方案》,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总。最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCEL文件放在同一个文件夹下,而且格式一致,那么利用ADO汇总这几个文件的数据是非常快的,这讲的内容和第32讲的内容是类似的,不过第32讲的内容是要事先知道文件的名称,然后建立一个数组来分别对应每个文件,通过循环来实现从每个文件中提取数据的目的,本讲的内容是事先不知道每个文件的名称。
实例:在一个文件夹下有若干个文件,如下图:
我们现在,需要把上面的文件夹中除了“VBA与数据库操作”之外的各个文件的内容一次性汇总出来,这个VBA程序该如何写呢?代码如下:
Sub mynzexcels_6()
'第37讲,利用ADO,实现同一文件夹下EXCEL工作表数据的汇总
Dim cnADO As Object
Dim strPath, strTable, strSQL, Z As String
Set cnADO = CreateObject("ADODB.Connection")
Range("a:g").ClearContents
Range("a1:e1") = Array("日期", "型号", "批号", "出库数量", "库存数量")
Z = Dir(ThisWorkbook.Path & "\*.*")
strPath = ThisWorkbook.Path & "\" & Z
strTable = "[sheet1$A2:h65536]"
'建立连接,提取数据
x = 2
Do While Z <> ""
If Z <> "VBA与数据库操作.xlsm" Then
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath
strSQL = "select F1,F2,F3,F4,F5 from " & strTable
Range("A" & x).CopyFromRecordset cnADO.Execute(strSQL)
x = Range("b65536").End(xlUp).Row
cnADO.Close
End If
Z = Dir
Loop
Set cnADO = Nothing
End Sub
代码截图:
代码讲解:
1 Z = Dir(ThisWorkbook.Path & "\*.*") 其中DIR函数用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 ("")。
2 strPath = ThisWorkbook.Path & "\" & Z
strTable = "[sheet1$A2:h65536]"
上述代码分别给出了文件的路径名称和数据表的范围,数据的范围是sheet1工作表除去表头后的全部$A2:h65536.
3 strSQL = "select F1,F2,F3,F4,F5 from " & strTable
Range("A" & x).CopyFromRecordset cnADO.Execute(strSQL)
建立连接后把需要的数据拷贝出来,需要的数据是第1列,第2列,第3列,第4列 ,第5列
4 x = Range("b65536").End(xlUp).Row 下次复制的位置确定.
5 Z = Dir
特别注意:第一次调用 Dir 函数时,必须指定 pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括 pathname。Dir 会返回匹配 pathname 的第一个文件名。若想得到其它匹配 pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir 会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir 时,就必须指定 pathname,否则会产生错误。不必访问到所有匹配当前 pathname 的文件名,就可以改变到一个新的 pathname 上。但是,不能以递归方式来调用 Dir 函数。以 vbDirectory 属性来调用 Dir 不能连续地返回子目录。由于文件名并不会以特别的次序来返回,所以可以将文件名存储在一个数组中,然后再对这个数组排序。
上述的Z=dir 就是实现的下一个文件名的调用。
下面看运行的结果:
点击“ADO实现同文件夹下所有文件数据汇总”按钮:
汇总后再A到E列给出了数据的汇总:
今日内容回向:
1 在不知道文件名和文件个数的前提下,如何汇总文件?
2 DIR函数的意义是否理解?

热心网友 时间:2023-10-23 13:44

数据可以支持解决很多问题

热心网友 时间:2023-10-23 13:45

是哪就是数据汇总啊老得得到的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 在同一个word文档中如何将几个表格的格式统一 怎么快速将Excel文件中多个工作表的数据汇总 Excel中如何将一个表格中的所有sheet打印设置成统一格式 如何把一个文件夹里面所有的excel表格一次性设置统一的打印格式。意思是说一个文件夹里面有很多个表 excl文件中如何让表格按一个标准统一起来? 一个excel文件工作簿里有很多个工作表,怎么才能设置所有工作表一次性全... 如何在EXCEL文件中把一个工作簿中的所有工作表数据汇总,表格内容全部一样。 工业企业的下脚料收入的会计分录 工业废料的名词解释 北京也将实行垃圾分类管制,那工业废料属于哪一类? 工业废料的范围 工业企业下脚料收入 邮政储蓄贷款20万一年利息多少 工业产品产生工业废料的原因? 工业垃圾如何处理? 大量橡塑保温材料废料边角料怎么处理 工业企业卖边角废料400 000元,会计分录怎么做? 工业企业的边角废料期末要不要结转成本? ( 产成品的下脚料可以再利用,请问,下脚料的成本怎么算,成本包括:工资、动力、原材料 工业企业的边角废料期末是怎样结转成本的,会计分录是怎么做呢? 郑州地区的废钢废铁,工业边角料回收后都拉那里去了? 在一个excel的工作表中有多个表格 ,如何才能将表单中的各项统计到一个表格中去? 醋真的能清除冰箱么,消毒的? 去除冰箱异味能使用陈醋吗? 醋能清洗冰箱吗 什么东西可以除去冰箱里的异味 冰箱总是有臭味,怎么解决 醋真的能清除冰箱么,消毒的 冰箱异味怎么去除效果好? 冰箱除异味用陈醋好不好? 为什么醋可以用在冰箱除臭? 最简单的冰箱除臭法。用醋的效果好不好? 衣柜冰箱有味道怎么办 去除衣柜和冰箱异味的技巧 用醋除臭有没有科学依据? 醋为什么可以除去冰箱里的异味 用醋 去除冰箱异味还是用水? 冰箱里异味用白醋好还是陈醋 醋放在冰箱的什么位置能去除异味 怎么清洗淡粉色衣服(袖口)顽固污渍啊? 白衣服的领口袖口很容易脏,又难清洗。怎样才能清洗得很干净? 智慧校园提示说用户已取消关注学校通知怎么回事?