ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 代码求指点,如何查找所有子文件夹内指定名称文件及整合其数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-20 16:55 | 显示全部楼层 |阅读模式
文件形式为文件夹A内包含BCDE等若干子文件夹,子文件夹内都包含一个名为1.xlsx的文件,该文件内有两行数据。

需求为将所有1.xlsx的该两行数据依次整合到一个sheet里统计。

我的操作逻辑是
1.找到A文件夹内第一个B文件夹,找到B文件夹内1.xlsx文件并打开
2.复制其前两行到我的sheet1的1,2行。然后关闭1.xlsx文件(我用的Workbooks.Close会报错,还没研究为什么)
3.寻找下一个C文件夹的1.xlsx文件,打开,此时需要复制到sheet1的3.4行
现在代码上存在第一个问题复制range和我想象中不太一样,虽然只选了A1但实际上把A1相连的所有数据都copy了。但这样倒也能实现要求所以还行
但第二个文件开始的复制想换行就不行了,因为我不是很熟悉fso所以定义的变量会在代码中被重置。实际上导致我没法利用循环去实现复制数据的位置改变

核心问题就是
1,如何实现随着过程依次下移我的粘贴区域
2,也请顺便解答如何实现两个workbook之间的指定区域(比如把一个文件的A1:B10到另一个文件的A1:B10)复制?
代码截图和文档都有附件,请大佬指点
Quicker_20241120_165353.png

代码文件.zip

218.61 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-11-20 21:02 | 显示全部楼层
  1. Sub ykcbf()   '//2024.8.22
  2.    
  3.     Application.ScreenUpdating = False
  4.     With Application.FileDialog(msoFileDialogFolderPicker)
  5.         .Title = "请选择文件夹"
  6.         .InitialFileName = ThisWorkbook.Path & ""
  7.         If .Show = -1 Then
  8.             p = .SelectedItems(1) & ""
  9.         End If
  10.     End With
  11.     getfds p
  12. End Sub

  13. Sub getfds(p)
  14.     Set fso = CreateObject("Scripting.FileSystemObject")
  15.     Dim fileName As String
  16.     Dim icell As Integer
  17.     Dim mywb As Workbook
  18.    
  19.     icell = 1
  20.     'Nowbookname = Mid(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, "") + 1)
  21.     For Each fd In fso.GetFolder(p).SubFolders
  22.         For Each f In fso.GetFolder(fd).Files
  23.             fileName = Mid(f, InStrRev(f, "") + 1)
  24.             'fileName = Left(fileName, InStrRev(fileName, ".") - 1)
  25.             If fileName = "1.xlsx" Then
  26.                 Set mywb = Workbooks.Open(f)
  27.                 'Workbooks("1.xlsx").Worksheets("Sheet1").Range("2:2").CurrentRegion.Copy Workbooks("代码所在工作簿.xlsm").Worksheets("Sheet1").Range("icell:icell")
  28.              '//   mywb.Worksheets("Sheet1").Range("A1").CurrentRegion.Copy ThisWorkbook.Worksheets("Sheet1").Range("A" & icell)
  29.              icell = ThisWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(3).Row + 1
  30.              mywb.Worksheets("Sheet1").Range("A1").Range("A1:G2").Copy ThisWorkbook.Worksheets("Sheet1").Range("A" & icell)
  31.               '//  icell = icell + 2
  32.                 mywb.Close
  33.                 ' Workbooks("代码所在工作簿.xlsm").Worksheets("Sheet1").Range("A2").CurrentRegion.Copy Workbooks("代码所在工作簿.xlsm").Worksheets("Sheet2").Range("A2")
  34.                 'Workbooks("代码所在工作簿.xlsm").Worksheets("Sheet1").Range("A1").CurrentRegion.Copy f.Worksheets("Sheet1").Range("D1")
  35.                 'Workbooks.Close f
  36.             End If
  37.         Next
  38.         getfds fd.Path
  39.     Next fd
  40.     Set fso = Nothing
  41. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-11-20 21:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1,如何实现随着过程依次下移我的粘贴区域
2,也请顺便解答如何实现两个workbook之间的指定区域(比如把一个文件的A1:B10到另一个文件的A1:B10)复制?
代码截图和文档都有附件,请大佬指点



见到代码 想吐血!

1 , 打开Excel文件后无指定工作薄的对象  一般用指定工作簿对象  ,工作簿打开后 一定要有关闭动作 否则肯定出错
Set mywb = Workbooks.Open(f)  
mywb.close

2   在循环语句里面 循环获得 工作表的最后一行    这样可以现随着过程依次下移我的粘贴区域

icell = ThisWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(3).Row + 1
  mywb.Worksheets("Sheet1").Range("A1").Range("A1:G2").Copy ThisWorkbook.Worksheets("Sheet1").Range("A" & icell)


3, 将语句改为这个
       mywb.Worksheets("Sheet1").Range("A1").Range(“单元区域”).Copy ThisWorkbook.Worksheets("Sheet1").Range("A" & icell)

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-21 16:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
闻启学 发表于 2024-11-20 21:12
1,如何实现随着过程依次下移我的粘贴区域
2,也请顺便解答如何实现两个workbook之间的指定区域(比如把一 ...

感谢指点,尝试了一下可以跑了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-28 11:29 , Processed in 0.020107 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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