ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1505|回复: 10

[求助] 批量提取文件名填入相应的行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-26 11:23 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教:同一文件夹下有多个文件,想提取文件名到考级汇总表的第一行相应的位置(B1-B8单元格) image.png

并且将相应文件内的学生综合成绩填入相应书目的列中。如图
image.png

考级汇总表.zip

28.53 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2019-12-26 12:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-26 12:51 | 显示全部楼层
liulang0808 发表于 2019-12-26 12:16
http://club.excelhome.net/thread-1258425-1-1.html
资料,楼主可以参考下爱

能不能直接帮我写一个啊,我不会

TA的精华主题

TA的得分主题

发表于 2019-12-26 13:12 | 显示全部楼层
  1. Sub 按钮1_Click()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = ThisWorkbook.Sheets(1).[a1].CurrentRegion
  4.     Application.ScreenUpdating = False
  5.     For j = 2 To UBound(arr)
  6.         If Len(arr(j, 1)) > 0 Then d(arr(j, 1)) = j
  7.     Next j
  8.     For i = 2 To UBound(arr, 2) - 1
  9.         If Dir(ThisWorkbook.Path & "" & arr(1, i) & ".xls") <> "" Then
  10.             With Workbooks.Open(ThisWorkbook.Path & "" & arr(1, i) & ".xls")
  11.                 brr = .Sheets(1).UsedRange
  12.                 .Close False
  13.             End With
  14.             For j = 3 To UBound(brr)
  15.                 If d.exists(brr(j, 2)) Then
  16.                     r = d(brr(j, 2))
  17.                     arr(r, i) = brr(j, 5)
  18.                 End If
  19.             Next j
  20.         End If
  21.     Next i
  22.     ThisWorkbook.Sheets(1).[a1].CurrentRegion = arr
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-12-26 13:14 | 显示全部楼层
附件内容供参考。。。。。。

考级汇总表.zip

56.18 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-26 13:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-12-26 18:39 | 显示全部楼层
cshzh 发表于 2019-12-26 13:23
能汇总成绩,但提取文件名不行啊

要怎么提取文件名?没有看出来

TA的精华主题

TA的得分主题

发表于 2019-12-26 21:29 | 显示全部楼层
PQ参考解法
微信截图_20191226212731.png

考级汇总表.rar

37.36 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-12-27 10:17 | 显示全部楼层
liulang0808 发表于 2019-12-26 18:39
要怎么提取文件名?没有看出来

汇总表第一行A2到A9是没有书名的,要提取文件文件夹下的书名填入

TA的精华主题

TA的得分主题

发表于 2019-12-27 12:01 | 显示全部楼层
  1. Sub 按钮1_Click()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Set fso = CreateObject("scripting.filesystemobject")
  4.     arr = ThisWorkbook.Sheets(1).[a1].CurrentRegion
  5.     ActiveSheet.UsedRange.Offset(1, 1).ClearContents
  6.     Application.ScreenUpdating = False
  7.     For j = 2 To UBound(arr)
  8.         If Len(arr(j, 1)) > 0 Then d(arr(j, 1)) = j
  9.     Next j
  10.     c = 2
  11.     For Each f In fso.getfolder(ThisWorkbook.Path).Files
  12.         ThisWorkbook.Sheets(1).Cells(1, c) = Split(f.Name, ".")(0)
  13.         arr = ThisWorkbook.Sheets(1).[a1].CurrentRegion
  14.         If InStr(f.Name, ThisWorkbook.Name) = 0 Then
  15.             With Workbooks.Open(f)
  16.                 brr = .Sheets(1).UsedRange
  17.                 .Close False
  18.             End With
  19.             
  20.             For j = 3 To UBound(brr)
  21.                 If d.exists(brr(j, 2)) Then
  22.                     r = d(brr(j, 2))
  23.                     arr(r, c) = brr(j, 5)
  24.                 End If
  25.             Next j
  26.             c = c + 1
  27.             ThisWorkbook.Sheets(1).[a1].CurrentRegion = arr
  28.         End If
  29.     Next
  30.     ThisWorkbook.Sheets(1).[a1].CurrentRegion = arr
  31.     Application.ScreenUpdating = True
  32. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 18:12 , Processed in 0.051444 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表