【VBA】获取指定目录下的Excel文件,并合并所有excel中的内容。
创作时间:
作者:
@小白创作中心
【VBA】获取指定目录下的Excel文件,并合并所有excel中的内容。
引用
CSDN
1.
https://blog.csdn.net/weixin_43957681/article/details/138134760
本文将介绍如何使用VBA代码实现获取指定目录下的Excel文件,并将这些Excel文件中的内容合并到一个新的Excel文件中。
操作步骤
新建一个Excel表格,并创建两个Sheet,名字分别命名为FileList 和 All information。
按ALT+F11进入 VBA编程模块,插入模块。
将以下代码复制到模块中。点击运行即可,然后就能提取指定目录下的所有Excel文件信息并合并到一起输出到“All information” 中。
运行过程中,在弹窗中输入想要提取信息的路径地址。
代码说明
这个脚本的逻辑分为两部分:
- 首先是提取文件夹中所有文件的基本信息,并将其填充到"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
本文原文来自CSDN
热门推荐
女性一般什么时候进入更年期
利川旅游景点分布图高清,利川旅游攻略自助游攻略
人民日报看山西|忻州古城:千年古韵传新声
一文读懂羊水穿刺检查,直观了解4种染色体有无异常
未来解放军可用意念操控机器?中国企业已提交专利,科幻已成现实
如何在庭审中进行质证
AI时代月薪10万不是梦!揭秘2025年最赚钱的AI岗位与竞争力法则
住养老院意味着“子女不孝”?这些老人为何改变了主意
蚊子的习性和特征
企业注册资金如何实缴?步骤与方式详解
美国绿卡有效期多少年?申请与续签指南
进行高强度运动后出现脚趾麻木应如何处理
以你的工资能开什么车?快过来参照一下,劝你量力而行!
3款最适合普通家庭的二手车,省油又省心
9个万能街拍姿势,轻松营造随性街头氛围,拍出自然时髦大片!
2024年全国机动车保有量等最新权威数据发布
土木工程和建筑学哪个专业更好!附2024年录取分数线
中秋后,长寿花“睡醒了”,赶紧“搬家”,开出满头“花疙瘩”
新鲜海蜇怎么处理才能吃?
中医养生的智慧:如何在日常生活中实践?
牛奶真能保存6个月不变质?
协议离婚是否有效
大数据环境下NBA勇士队比赛数据分析——全速数据
初中英语语法名词知识点详解:规则名词的复数形式
心率过快的人注意什么
如何判断一个城市的发展活力?判断时需要考虑哪些因素?
高龄妇女这一妊娠风险将倍增,如何「破局」,守护安全孕育?
怎么证明这世界是否存在?法国哲学家笛卡尔这样做
揭秘江西传统特色美食瓦罐汤的制作工艺
珠三角枢纽(广州新)机场今年动工!广佛将迎“双机场”时代