问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我想在excel中通过某列单元格的内容在指定文件夹中查找包含此内容的文件并将文件复制到另一个文件夹中

发布网友 发布时间:2022-04-30 04:05

我来回答

3个回答

热心网友 时间:2023-10-11 05:43

答:复制下面代码到模块,确保图中工作表为活动工作表,运行Demo程序。以下为运行结果截图:

代码:

Dim FindedNames() As String
Dim NumNames As Long
Sub Demo()
    Dim FilePath As String
    Dim FileName As String
    Dim Cell As Range
    
    FilePath = "D:\8029\"
    FileName = "*.*"
    Call ReDir(FilePath, FileName)
    If UBound(FindedNames) < LBound(FindedNames) Then
        MsgBox "文件夹内无文件"
        Exit Sub
    End If
    For Each Cell In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        For i = 0 To UBound(FindedNames)
            If FindedNames(i) Like "*" & Cell & "*" Then
                FileCopy FilePath & "\" & FindedNames(i), "D:\123321\" & FindedNames(i)
                Cell.Offset(0, 1) = "复制成功"
            Else
                Cell.Offset(0, 1) = "没找到相关文件"
            End If
        Next
    Next
End Sub
Public Sub ReDir(ByVal CurrDir As String, ByVal FindName As String)
    Dim Dirs() As String
    Dim NumDirs As Long
    Dim TotalFiles, SingleFile
    Dim TotalFolders, SingleFolder
    Dim fso As Object
    Set fso = CreateObject("scripting.filesystemobject")
    Set TotalFiles = fso.GetFolder(CurrDir).Files
    Set TotalFolders = fso.GetFolder(CurrDir).SubFolders
    If TotalFiles.Count <> 0 Then
        For Each SingleFile In TotalFiles
            If fso.GetFile(SingleFile).Name Like FindName Then
                ReDim Preserve FindedNames(0 To NumNames) As String
                FindedNames(NumNames) = fso.GetFileName(SingleFile)
                NumNames = NumNames + 1
            End If
        Next
    End If
    If TotalFolders.Count <> 0 Then
        For Each SingleFolder In TotalFolders
            ReDim Preserve Dirs(0 To NumDirs) As String
            Dirs(NumDirs) = SingleFolder
            NumDirs = NumDirs + 1
        Next
    End If
    For i = 0 To NumDirs - 1
        Call ReDir(Dirs(i), FindName)
    Next i
End Sub

热心网友 时间:2023-10-11 05:43

只有用宏代码才行。运行以下代码能满足要求:

如果一点不懂VBA代码,请分享文件来,我帮你做一个按钮,你只要按下按钮就行了

Sub 复制指定文件()
Dim Ar, I%, S$
Ar = Range("B2").CurrentRegion
For I = 2 To UBound(Ar)
   If Ar(I, 1) <> "" Then
      S = Dir(Ar(2, 4) & "\*-" & Ar(I, 1) & "-*")
      While S <> ""
         FileCopy Ar(2, 4) & "\" & S, Ar(3, 4) & "\" & S
         S = Dir
      Wend
   End If
Next
End Sub

热心网友 时间:2023-10-11 05:44

Dim FindedNames() As String
Dim NumNames As Long
Sub Demo()
Dim FilePath As String
Dim FileName As String
Dim Cell As Range

FilePath = "D:\123\"
FileName = "*.*"
Call ReDir(FilePath, FileName)
If UBound(FindedNames) < LBound(FindedNames) Then
MsgBox "文件夹内无文件"
Exit Sub
End If
For Each Cell In Range("P2:P" & Cells(Rows.Count, 1).End(xlUp).Row)
For i = 0 To UBound(FindedNames)
If FindedNames(i) Like "*" & Cell & "*" Then
FileCopy FindedNames(i), "D:\111\" & Split(FindedNames(i), "\")(UBound(Split(FindedNames(i), "\")))
Cell.Offset(0, 1) = "复制成功"

End If
Next
Next
End Sub
Public Sub ReDir(ByVal CurrDir As String, ByVal FindName As String)
Dim Dirs() As String
Dim NumDirs As Long
Dim TotalFiles, SingleFile
Dim TotalFolders, SingleFolder
Dim fso As Object
Set fso = CreateObject("scripting.filesystemobject")
Set TotalFiles = fso.GetFolder(CurrDir).Files
Set TotalFolders = fso.GetFolder(CurrDir).SubFolders
If TotalFiles.Count <> 0 Then
For Each SingleFile In TotalFiles
If fso.GetFile(SingleFile).Name Like FindName Then
ReDim Preserve FindedNames(0 To NumNames) As String
FindedNames(NumNames) = fso.GetFileName(SingleFile)

FindedNames(NumNames) = SingleFile
'NumNames = NumNames + 1
End If
Next
End If
If TotalFolders.Count <> 0 Then
For Each SingleFolder In TotalFolders
ReDim Preserve Dirs(0 To NumDirs) As String
Dirs(NumDirs) = SingleFolder
NumDirs = NumDirs + 1
Next
End If
For i = 0 To NumDirs - 1
Call ReDir(Dirs(i), FindName)
Next i
End Sub
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 格力空调柜机指示灯亮,开不了机,用遥控器开机也不行,遥控器按开机遥控器上面还显示5E,怎么回事啊??? 我用淘宝了怎么不免流量呢,看抖音也不免流量吗 奥迪Q5汽车停着车无缘无故报警,双闪灯一直闪亮啊? 七座奥迪Q7锁门人在车上睡着红常报警响 成都火锅排名前十强官网 奥迪a6锁车后报警器响,并且还双闪是什么原因 利用EXCEL单元格里的数据批量查找电脑里的文件夹 奥迪A6L轮胎气压报警灯怎么消除? 为什么我办的大王卡我的手机QQ不免流量 奥迪汽车发动机报警什么原因? 奥迪汽车发动机报警什么原因 奥迪A6L解锁报警怎么解除? 奥迪车突然出现报警,这怎么回事啊 嘉峪关四岔路口尚品蓉城火锅多少钱? 蓉城老妈火锅怎么样 奥迪a4停车的突然报警什么原因 尼日利亚CRIA怎么办理 怎么从百度搜索歌曲下载到MP3上 凉山州邮编 海事局干什么的 沃TV到底免不免流量 怎么个免法 有大量EXCEL文件,我想把所需要的部分文件,方便的移动到其他文件夹里,或者找出来? 腾讯大王卡到底那些软件免流量那些不免流量啊 怎样跟据Excel中B列单元格的文件名称查找目录文件夹中的文件并将文件复制黏贴到其他文件夹 天王卡为什么不免流量 excel中通过单元格的内容在指定文件夹中查找包含此内容的文件并将文件复制到另一个文件夹中 大腾讯王卡腾讯应用不免流? 怎么通过EXCEL表格中的文件名,提取所需文件到一个文件夹,或集中在一个地方 我的腾讯为什么不免流量看呢? 大王卡看腾讯视频为什么不免流量 对不免流量的软件怎么收费,不免流量的软件有哪些 oracle数据库,修改哪些配置需要停库之后重启才能生效? 成都到九寨沟有火车到吗 成都去九寨沟赶火车多少钱 斯凯奇38码怎么是250 斯凯奇鞋有38号半的吗? 运动鞋斯凯奇38鞋号怎么标注? 斯凯奇儿童版38和大人有区别吗? 斯凯奇240是37还是38 斯凯奇的鞋我穿37.5的正好,没有37.5码的,38码和37码的我选择哪个码?