VBA怎么在文件夹内,提取EXCEL的特定内容?
描述:A文件夹内有200个EXCEL表,每个表里面有一个名称为“餐饮费用”的sheet,需要提取表内的特定单元格数据。需求1:每个“餐饮费用”sheet的B2单元格内容提...
描述:A文件夹内有200个EXCEL表,每个表里面有一个名称为“餐饮费用”的sheet,需要提取表内的特定单元格数据。需求1:每个“餐饮费用”sheet的 B2单元格内容提取;由于部分人员随意插入行和列,导致错行错列情况,只能保证下面需要内容在 C行以下 & A-AH列以内;需求2:由于存在错行错列,需要每个“餐饮费用”sheet中,带有“进货详单内容2”右方的第1个单元格内容提取;需求3:由于存在错行错列,每个“餐饮费用”sheet中,带有“进货地址点”下方的两个单元格内容提取;(为经纬度)最后汇总成表,详见附图
展开
展开全部
Sub readsubfolders()
i = Cells(Rows.Count, 1).End(3).Row
Set fso = CreateObject("scripting.filesystemobject")
Set myfolder = fso.GetFolder("D:\a") '引号内填写文件夹a的完整路径
For Each myfile In myfolder.Files
If myfile.Name Like "*.xls*" Then
Set wb = Workbook.Open(myfile.Path)
i = i + 1
Cells(i, 1) = wb.Name
Cells(i, 2) = wb.Worksheets("餐饮费用").[b2]
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="供货商地址", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 3) = rg.Offset(1)
Cells(i, 4) = rg.Offset(2)
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="承包商地址", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 5) = rg.Offset(1)
Cells(i, 6) = rg.Offset(2)
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="进货详单内容2", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 7) = rg.Offset(, 1)
wb.Close False
End If
Next
Set fso = Nothing
End Sub
i = Cells(Rows.Count, 1).End(3).Row
Set fso = CreateObject("scripting.filesystemobject")
Set myfolder = fso.GetFolder("D:\a") '引号内填写文件夹a的完整路径
For Each myfile In myfolder.Files
If myfile.Name Like "*.xls*" Then
Set wb = Workbook.Open(myfile.Path)
i = i + 1
Cells(i, 1) = wb.Name
Cells(i, 2) = wb.Worksheets("餐饮费用").[b2]
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="供货商地址", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 3) = rg.Offset(1)
Cells(i, 4) = rg.Offset(2)
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="承包商地址", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 5) = rg.Offset(1)
Cells(i, 6) = rg.Offset(2)
Set rg = wb.Worksheets("餐饮费用").UsedRange.Find(What:="进货详单内容2", LookIn:=xlValues, LookAt:=xlWhole)
Cells(i, 7) = rg.Offset(, 1)
wb.Close False
End If
Next
Set fso = Nothing
End Sub
更多追问追答
追问
Set wb = Workbook.Open(myfile.Path)
报424对象错误了,我试着改了下,又报其他错误,麻烦帮忙调试下
追答
Set wb = Workbooks.Open(myfile.Path)
不小心少打了个s
展开全部
完成要求需要掌握以下知识点:
会使用dir用法遍历文件夹下所有文件,找到所需文件
会使用open用法打开所需文件(也可不打开文件,通过sql读取内存)
会使用find用法寻找所需文字位置
会使用offset用法偏移获取所需信息
会使用数组用法,将数据存到数组后一次输出,提高计算效率
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果每个表都有“进货详单内容2”、”供货商地址“、“承包商地址”,没有其他重复情况,可以通过搜索单元格内容进行定位
Range.Find(What:=查找值, LookIn:=xlValues, LookAt:=xlWhole)
找到位置后,用Offset获取它右边或下边的值
Range.Find(What:=查找值, LookIn:=xlValues, LookAt:=xlWhole)
找到位置后,用Offset获取它右边或下边的值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询