使用VBA搜索文件并将文件放到指定文件夹

请教高手。现在有300个文件夹(分别以每天的日期命名,如20130528),每个文件夹里有800个文本文件(分别以6位数命名,如135790),现在想找出每个文件夹里这8... 请教高手。现在有300个文件夹(分别以每天的日期命名,如20130528),每个文件夹里有800个文本文件(分别以6位数命名,如135790),现在想找出每个文件夹里这800个文本文件里指定文件名的80的文件(如找出136666,148773等),并把这80个放到另外的一个文件夹。怎么用VBA写程序?或者告诉我要用到哪些语句。 展开
 我来答
jimpro
推荐于2016-01-14 · TA获得超过104个赞
知道答主
回答量:148
采纳率:0%
帮助的人:66.1万
展开全部
Dim i, j As Long
Dim nPath As String '存放目录名
Dim nTargetPath As String '目标目录名
Dim nFile As String '存放要搜索的文件名

nTargetPath = "d:\mm" '将80个文件移动到 d:\mm 中,当然目录名可以自己改

j = 0 '用于统计移动了多少个文件
For i = 20130501 To 20130529 Step 1
nPath = ""
nFile = ""
nPath = "c:\" + CStr(i) '存放目录名
If Dir(nPath, vbDirectory) <> "" Then '搜索目录是否存在
nFile = nPath + "\" + "136666" '要搜索的文件名
If Dir(nFile, vbArchive + vbHidden + vbNormal + vbReadOnly) <> "" Then '搜索指定文件是否存在
FileCopy nFile, nTargetPath
If Dir(nTargetPath + "136666") Then Kill (nFile) '如果移动成功则删除原先的文件
j = j + 1
End If
nFile = nPath + "\" + "148773" '要搜索的文件名
If Dir(nFile, vbArchive + vbHidden + vbNormal + vbReadOnly) <> "" Then '搜索指定文件是否存在
FileCopy nFile, nTargetPath
If Dir(nTargetPath + "148773") Then Kill (nFile) '如果移动成功则删除原先的文件
j = j + 1
End If
'.......
End If
If j > 80 Then Exit For '如果移动文件数超过80则退出。
Next
这个可以满足你的要求,只要在相应的地方改成你自己的就行了。
追问
感谢作答!不过可能我没描述清楚。
现在就是想把D盘20120511文件夹里的指定80个移到E盘的20120511文件夹;D盘20120512文件夹里的同样名称的80个移到E盘的20120512文件夹·······
其实就是我从系统每天导出来的数据多了很多我不需要的,现在只筛选出需要的那80个放到另一边。另外能不能直接写语句在E盘里直接新建目标文件夹来放那80个文件?
追答
Dim i, j, k, nCount,BeginDate, EndDate As LongDim nPath, FileStr, DriveStr,nTargetPath ,nFile As String
Dim FileArr, DrvArr
BeginDate=20130501 '开始日期,整型
EndDate=20130529 '结束日期
nTargetPath="d:\mm" '将文件移动到 d:\mm 中
DriveStr="c:\,d:\,e:\,f:\" '搜索的盘符,逗号分开
FileStr="136666,148773, ... ,文件n" '指定n个文件名,逗号分开
nCount=0 '统计移动数
'判断目录不存在则建立
If Dir(nTargetPath, vbDirectory) "" Then MkDir (nTargetPath)
FileArr=Split(FileStr, ",")
DrvArr=Split(DriveStr, ",")
For i = BeginDate To EndDate Step 1
For j = 0 To UBound(DrvArr) Step 1
nPath=""
nFile=""
nPath=DrvArr(j)+CStr(i)
If Dir(nPath, vbDirectory) "" Then'搜索目录是否存在
For k = 0 To UBound(FileArr) Step 1
nFile=nPath+"\"+FileArr(k)
If Dir(nFile, vbArchive + vbHidden + vbNormal + vbReadOnly) "" Then '搜索指定文件是否存在
FileCopy nFile, nTargetPath
'如移动成功则删除原先的文件
If Dir(nTargetPath + FileArr(k), vbArchive + vbHidden + vbNormal + vbReadOnly) Then Kill (nFile)
nCount=nCount+1
End If
Next k
End If
If nCount>80 Then Exit For
Next j
Next i
可以叫我表哥
推荐于2016-02-23 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464973
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
使用VBA搜索文件并将文件放到指定文件夹,参考代码如下:
Dim lngRow As Integer
Dim lngMaxRows As Integer

Dim strFileName As String
Dim strSrcFilePath As String
Dim strDesFilePath As String

Dim strSrcPath As String: strSrcPath = "C:\Users\Administrator\Desktop\SrcImg\" '源文件夹路径,请自行修改
Dim strDesPath As String: strDesPath = "C:\Users\Administrator\Desktop\DesImg\" '目标文件夹路径,请自行修改

Dim objFileSystem As Object
Set objFileSystem = CreateObject("Scripting.FileSystemObject")

lngMaxRows = Range("A1048576").<a href="https://www.baidu.com/s?wd=End&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4mHnYPWFBuH9-rj-BPWRd0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1RYrj0Yn1Dvnf" target="_blank" class="baidu-highlight">End</a>(xlUp).Row '如果Excel版本为2003,请将1048576改为65536

For lngRow = 1 To lngMaxRows
strFileName = Cells(lngRow, 1).Value & ".jpg" '默认扩展名为.jpg

strSrcFilePath = strSrcPath & strFileName
strDesFilePath = strDesPath & strFileName

If objFileSystem.FileExists(strSrcFilePath) Then
objFileSystem.CopyFile strSrcFilePath, strDesFilePath
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式