ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据单位和人员建立文件夹然后剪切文件,写的代码运行有问题,麻烦老师修正,谢谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-30 22:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在 指定文件夹中遍历xls文件,当文件名与 清册表里的流水号 相同时,则根据单位在 指定 文件夹中建立文件夹,再在单位文件夹下建立人员文件夹,再把指定文件夹中的对应的xls文件剪切到 人员 文件夹中
我写的代码运行有问题,运行到 MyFile = Dir 这里就出错,麻烦老师帮忙修改一下,谢谢!

程序示例见: 最终结果 文件夹,我共有几万个xls文件,手工分类不敢想像,麻烦各位老师了,拜谢!!
论坛求助-建立文件夹.rar (101.51 KB, 下载次数: 14)


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-30 22:49 | 显示全部楼层
麻烦哪位老师帮我看看,万分感谢!!

TA的精华主题

TA的得分主题

发表于 2014-7-30 23:13 | 显示全部楼层
请看附件!!

论坛求助.rar

103.41 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2014-7-30 23:10 | 显示全部楼层
本帖最后由 dragonthree 于 2014-7-30 23:36 编辑

复制代码
  1. Sub bcfz()
  2. Dim i&, Myr&, Arr
  3. Dim d, d1, d2, k, str
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Set d1 = CreateObject("Scripting.Dictionary")
  6. Set d2 = CreateObject("Scripting.Dictionary")
  7. Myr = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
  8. Arr = Sheets("Sheet1").Range("a2:c" & Myr)
  9. For i = 1 To UBound(Arr)
  10.     d(Arr(i, 2)) = ""
  11.     d1(Arr(i, 1)) = Arr(i, 2)
  12.     d2(Arr(i, 1)) = Arr(i, 3)
  13. Next
  14. k = d.keys
  15. MkDir (ThisWorkbook.Path & "\结果")    '新建文件夹
  16. For i = 0 To d.Count - 1
  17.     MkDir (ThisWorkbook.Path & "\结果" & "" & k(i))   '新建二级文件夹
  18. Next
  19. s = Dir(ThisWorkbook.Path & "\出租土地" & "*.xls")
  20. Do While s <> ""
  21.      str = Left(s, 15)
  22.      MkDir (ThisWorkbook.Path & "\结果" & d1(str) & "" & d2(str))
  23.      Set fs = CreateObject("Scripting.FileSystemObject")
  24.      fs.movefile ThisWorkbook.Path & "\出租土地" & s, ThisWorkbook.Path & "\结果" & d1(str) & "" & d2(str) & ""
  25.      s = Dir
  26. Loop
  27. Set d = Nothing
  28. Set d1 = Nothing
  29. Set d2 = Nothing
  30. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-7-30 23:20 | 显示全部楼层
新建了一个"结果"文件夹!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-30 23:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dragonthree 发表于 2014-7-30 23:13
请看附件!!

万分感谢dragonthree老师在百忙之中帮助我,谢谢谢谢!!我先学习下您的代码,有问题再向您请教!!

TA的精华主题

TA的得分主题

发表于 2014-7-30 23:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub bcfz()
  2. Dim i&, Myr&, Arr
  3. Dim d, d1, d2, k, str, Mypath
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Set d1 = CreateObject("Scripting.Dictionary")
  6. Set d2 = CreateObject("Scripting.Dictionary")
  7. Myr = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
  8. Arr = Sheets("Sheet1").Range("a2:c" & Myr)
  9. Mypath = ThisWorkbook.Path
  10. For i = 1 To UBound(Arr)
  11.     d(Arr(i, 2)) = ""
  12.     d1(Arr(i, 1)) = Arr(i, 2)
  13.     d2(Arr(i, 1)) = Arr(i, 3)
  14. Next
  15. k = d.keys
  16. MkDir (Mypath & "\结果")     '新建文件夹
  17. For i = 0 To d.Count - 1
  18.     MkDir (Mypath & "\结果" & "" & k(i))    '新建二级文件夹
  19. Next
  20. s = Dir(Mypath & "\出租土地" & "*.xls")
  21. Do While s <> ""
  22.      str = Left(s, 15)
  23.      MkDir (Mypath & "\结果" & d1(str) & "" & d2(str))
  24.      Set fs = CreateObject("Scripting.FileSystemObject")
  25.      fs.movefile Mypath & "\出租土地" & s, Mypath & "\结果" & d1(str) & "" & d2(str) & ""
  26.      s = Dir
  27. Loop
  28. Set d = Nothing
  29. Set d1 = Nothing
  30. Set d2 = Nothing
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-7-31 00:36 | 显示全部楼层
本帖最后由 无姓人 于 2014-7-31 00:45 编辑
dragonthree 发表于 2014-7-30 23:48
有没有一个人员对应2个流水号?

有的,一个人员有可能会对应多 个流水号的情况。这么晚了还麻烦您,辛苦了!谢谢!!

TA的精华主题

TA的得分主题

发表于 2014-7-30 23:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
有没有一个人员对应2个流水号?

TA的精华主题

TA的得分主题

发表于 2014-7-31 10:20 | 显示全部楼层
  1. Sub bcfz()
  2. Dim i&, Myr&, Arr
  3. Dim d, d1, d2, d3, k, str, Mypath
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Set d1 = CreateObject("Scripting.Dictionary")
  6. Set d2 = CreateObject("Scripting.Dictionary")
  7. Set d3 = CreateObject("Scripting.Dictionary")
  8. Myr = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
  9. Arr = Sheets("Sheet1").Range("a2:c" & Myr)
  10. Mypath = ThisWorkbook.Path
  11. For i = 1 To UBound(Arr)
  12.     d(Arr(i, 2)) = ""
  13.     d1(Arr(i, 1)) = Arr(i, 2)
  14.     d2(Arr(i, 1)) = Arr(i, 3)
  15. Next
  16. k = d.keys
  17. MkDir (Mypath & "\结果")     '新建文件夹
  18. For i = 0 To d.Count - 1
  19.     MkDir (Mypath & "\结果" & "" & k(i))    '新建二级文件夹
  20. Next
  21. s = Dir(Mypath & "\出租土地" & "*.xls")
  22. Do While s <> ""
  23.      str = Left(s, 15)
  24.      If Not d3.exists(d1(str) & "" & d2(str)) Then
  25.          d3(d1(str) & "" & d2(str)) = ""
  26.          MkDir (Mypath & "\结果" & d1(str) & "" & d2(str))
  27.      End If
  28.      Set fs = CreateObject("Scripting.FileSystemObject")
  29.      fs.movefile Mypath & "\出租土地" & s, Mypath & "\结果" & d1(str) & "" & d2(str) & ""
  30.      s = Dir
  31. Loop
  32. Set d = Nothing
  33. Set d1 = Nothing
  34. Set d2 = Nothing
  35. Set d3 = Nothing
  36. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 13:51 , Processed in 0.051550 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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