Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2831|回复: 3

[已解决]查找符合要求的文件,并且复制到指定文件夹

[复制链接]
发表于 2015-1-4 11:41 | 显示全部楼层 |阅读模式
如何将列在excel里面的模糊文件名 如:以“Small”,“Big”为关键字,
以“C:\test\"为目标文件夹,将目标文件夹中所有含有关键字的文件(包括在子文件夹中符合要求的文件)
复制到"C:\123\"下面。

请问这个如何操作?
最佳答案
2015-1-4 13:05
  1. Dim arr(1 To 10000, 1 To 1), s%
  2. Sub Macro1()
  3. Dim brr, i%, j%, zf$
  4. Application.ScreenUpdating = False
  5. Application.DisplayAlerts = False
  6. brr = Range("a1").CurrentRegion
  7. s = 0
  8. zdir ThisWorkbook.Path & "\name1"
  9. For i = 1 To s
  10.     x = Split(arr(i, 1), "")
  11.     zf = x(UBound(x))
  12.     For j = 1 To UBound(brr)
  13.         If zf Like "*" & brr(j, 1) & "*" Then
  14.             With Workbooks.Open(Filename:=arr(i, 1))
  15.                 '把文件复制到当前路径,楼主自己参考修改
  16.                 .SaveAs Filename:=ThisWorkbook.Path & "" & zf
  17.                 ActiveWorkbook.Close 1
  18.             End With
  19.         End If
  20.     Next
  21. Next
  22. Application.DisplayAlerts = True
  23. Application.ScreenUpdating = True
  24. End Sub
  25. Sub zdir(p)
  26. Set fs = CreateObject("scripting.filesystemobject")
  27. For Each f In fs.GetFolder(p).Files
  28.     s = s + 1: arr(s, 1) = f
  29. Next
  30. For Each m In fs.GetFolder(p).SubFolders
  31.     zdir m
  32. Next
  33. End Sub
复制代码

test.zip

73.69 KB, 下载次数: 3

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-1-4 13:05 | 显示全部楼层    本楼为最佳答案   
  1. Dim arr(1 To 10000, 1 To 1), s%
  2. Sub Macro1()
  3. Dim brr, i%, j%, zf$
  4. Application.ScreenUpdating = False
  5. Application.DisplayAlerts = False
  6. brr = Range("a1").CurrentRegion
  7. s = 0
  8. zdir ThisWorkbook.Path & "\name1"
  9. For i = 1 To s
  10.     x = Split(arr(i, 1), "")
  11.     zf = x(UBound(x))
  12.     For j = 1 To UBound(brr)
  13.         If zf Like "*" & brr(j, 1) & "*" Then
  14.             With Workbooks.Open(Filename:=arr(i, 1))
  15.                 '把文件复制到当前路径,楼主自己参考修改
  16.                 .SaveAs Filename:=ThisWorkbook.Path & "" & zf
  17.                 ActiveWorkbook.Close 1
  18.             End With
  19.         End If
  20.     Next
  21. Next
  22. Application.DisplayAlerts = True
  23. Application.ScreenUpdating = True
  24. End Sub
  25. Sub zdir(p)
  26. Set fs = CreateObject("scripting.filesystemobject")
  27. For Each f In fs.GetFolder(p).Files
  28.     s = s + 1: arr(s, 1) = f
  29. Next
  30. For Each m In fs.GetFolder(p).SubFolders
  31.     zdir m
  32. Next
  33. End Sub
复制代码
回复

使用道具 举报

发表于 2015-1-4 13:06 | 显示全部楼层
………………

test.zip

51.71 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2015-1-4 13:08 | 显示全部楼层
dsmch 发表于 2015-1-4 13:06
………………

我在跑程序,您的代码我等会看,谢谢啦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 00:14 , Processed in 0.337897 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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