使用VBA批量获取并合并指定目录下的Excel文件内容
创作时间:
作者:
@小白创作中心
使用VBA批量获取并合并指定目录下的Excel文件内容
引用
CSDN
1.
https://blog.csdn.net/weixin_43957681/article/details/138134760
在日常工作中,我们常常需要处理大量分散在不同Excel文件中的数据。手动合并这些数据不仅耗时,还容易出错。本文将介绍如何使用VBA编写一个脚本,自动获取指定目录下的所有Excel文件,并将它们的内容合并到一个新的Excel文件中。
1.新建一个excel表格。并创建两个Sheet,名字分别命名为FileList 和 All information。
2.按ALT+F11进入 VBA编程模块,插入模块。
3.将如下 第五部分代码复制到模块中。 点击运行即可,然后就能提取指定目录下的所有excel文件信息并合并到一起输出到“All information” 中。
4.运行过程中,在弹窗中输入 想要提取信息的路径地址。
5.说明
这个脚本的逻辑分为两部分:
- 首先是提取文件夹中所有文件的基本信息,并将其填充到"FileList"工作表中。
- 之后,它将这些文件打开并将它们的内容合并到"All information"工作表中。
Sub CombinedScript()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
' Step 1: Extracting files from folders
Dim arr(1 To 10000) As String
Dim arr1(1 To 100000, 1 To 6) As String
Dim fso As Object, myfile As Object
Dim f, i, k, f2, f3, x
Dim q As Integer
arr(1) = Application.InputBox("Please enter the path to scan") & "\"
i = 1
k = 1
Do While i < UBound(arr)
If arr(i) = "" Then Exit Do
f = Dir(arr(i), vbDirectory)
Do
If InStr(f, ".") = 0 And f <> "" Then
k = k + 1
arr(k) = arr(i) & f & "\"
End If
f = Dir
Loop Until f = ""
i = i + 1
Loop
' Extract files information
Set fso = CreateObject("Scripting.FileSystemObject")
For x = 1 To UBound(arr)
If arr(x) = "" Then Exit For
f3 = Dir(arr(x) & "*.*")
Do While f3 <> ""
If InStr(f3, ".") > 0 Then
q = q + 1
arr1(q, 5) = arr(x) & f3
Set myfile = fso.GetFile(arr1(q, 5))
arr1(q, 1) = f3
arr1(q, 2) = myfile.Size
arr1(q, 3) = myfile.DateCreated
arr1(q, 4) = myfile.DateLastModified
arr1(q, 6) = myfile.DateLastAccessed
End If
f3 = Dir
Loop
Next x
Sheets("FileList").Range("A2").Resize(1000, 6).ClearContents
Sheets("FileList").Range("A2").Resize(q, 6) = arr1
' Step 2: Combine information into "All information" sheet
If Sheets("All information").FilterMode = True Then
Sheets("All information").ShowAllData
End If
Sheets("All information").Range("A2:ZZ100000").ClearContents
Dim currentFile As Object
Dim targetRow As Integer
Dim temRowCount As Integer
targetRow = 2
For fileCount = 2 To Sheets("FileList").Cells(10000, 1).End(xlUp).Row
Set currentFile = Application.Workbooks.Open(Sheets("FileList").Cells(fileCount, 5))
For sheetscount = 1 To currentFile.Sheets.Count
temRowCount = currentFile.Sheets(sheetscount).UsedRange.Rows.Count
' Copy content
currentFile.Sheets(sheetscount).UsedRange.Copy
ThisWorkbook.Sheets("All information").Cells(targetRow, 3).PasteSpecial (xlPasteValues)
' Set sheet and workbook information
ThisWorkbook.Sheets("All information").Range("A" & targetRow & ":A" & targetRow + temRowCount).Value = currentFile.Name
ThisWorkbook.Sheets("All information").Range("B" & targetRow & ":B" & targetRow + temRowCount).Value = currentFile.Sheets(sheetscount).Name
targetRow = targetRow + temRowCount
Next sheetscount
currentFile.Close False
Next fileCount
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
热门推荐
痛风"神药"一吃就好?年轻小伙患上多种疾病
保送清华北大的几种途径
现代女性独立性崛起:婚姻不再是她们心中的必须选择
纳兰性德《浣溪沙》深度解析
红楼梦中的“情”与“法”——从“元春归省”说起
白鹤时鸣•法说红楼⑧丨红楼梦中的“情”与“法”——从“元春归省”说起
感冒喉咙痛头痛浑身酸痛发冷怎么治疗
游戏陪玩代练产业调查:顶薪陪玩月入超10万元
科普 | 石头城是如何发现的?
煮汤圆,“冷水”和“开水”煮都不对!教你一招,汤圆不破皮露馅
磷酸奥司他韦胶囊主治什么
AxMath保姆级安装教程(word联用)及使用TIPS
学校放假期间学生留校学习受伤学校还要负责吗
闽台祖地,河南县城,两个人是根亲
室内窗台如何实现高效收纳?这种收纳方式存在哪些挑战?
怎样在银行办理联名账户?
实习期开车被扣6分,怎样才能不被吊销驾驶证?新手司机快看看把
澳门医生横琴坐诊 亲身书写跨境医疗新篇章
33平方公里与3000万游客:澳门文旅吸引力何以强大?
鸡的九种神仙做法,嘎嘎好吃!
长痘痘期间可以喝抹茶吗?医生的专业解答来了
医生提醒:大量食用抹茶粉存在这些健康风险
帕金森病手术前如何评估?六大维度全面解析
高强度减肥训练燃脂:原理、效果与注意事项
RX6600显卡评测:性能解析与选购指南
甘肃版袁大头:三千与三十万的收藏传奇
建筑图纸识图入门:从设计总说明到建筑平面图
华硕主板更新BIOS:如何操作、注意事项及常见问题解答
腰臀比0.7以下的体型判断是什么?
【科普营养】有小肚子?减肚子,这4个关键点缺一不可