FSO文件夹路径的多个通配符

卫斯理

是否可以在文件夹路径中添加通配符?共有4级文件夹。
Main_folder:路径已知
子文件夹1:文件夹名称部分已知。在我的示例4中有一个文件夹4.1和4.2(还有5.1、5.2、6.1和6.2),但我不知道文件将在哪里结束
子文件夹2:已知
子文件夹的路径4:这是我需要复制的文件夹。

FSO.copyfolder "C:\Users\USER\Desktop\retrieve test\New folder\4*\*" & wb.Sheets("Sheet3").Range("B1") & "*", "C:\Users\USER\Desktop\retrieve test\Lay\Lay"

下面的示例可以复制正确的文件夹,但这是我定义的第三个文件夹(这应该是可变的)

FSO.copyfolder "C:\Users\USER\Desktop\retrieve test\New folder\4.1\*" & wb.Sheets("Sheet3").Range("B1") & "*", "C:\Users\USER\Desktop\retrieve test\Lay\Lay"

宏需要做的是循环浏览所有文件夹,以找到工作表3 B1中定义的部分名称。

在此处输入图片说明

李·戴

先前的答案是基于我的误解和档案。已对此进行了修改,以便如果每个文件夹中有多个文件,则重复相同的文件夹名称,因此仅提取唯一的单个文件夹,并将该文件夹复制到目标文件夹。

Option Explicit

Dim vR()
Dim n As Long
Sub copyFileFromFolder()

    Dim strFolder As String, TargetFolder As String
    Dim i As Long
    Dim vSplit
    Dim str As String, Path As String
    Dim Wb As Workbook
    Dim FS As Scripting.FileSystemObject

    Set FS = New Scripting.FileSystemObject

    strFolder = "C:\Users\USER\Desktop\retrieve test\New folder\"
    TargetFolder = "C:\Users\USER\Desktop\retrieve test\Lay\Lay\"

    '*** The folder address below is for my test.
    'strFolder = "C:\Users\Admin\Documents\"                 '<~~ for my test -->It corresponds to  your New folder
    'TargetFolder = "C:\Users\Admin\Documents\target\"       '<~~ for my test

    Set Wb = ThisWorkbook
    str = Wb.Sheets("Sheet3").Range("B1")

    SearchFolder strFolder
    On Error Resume Next
    For i = 1 To n
        Path = vR(i)
        Path = Replace(Path, strFolder, "")
        vSplit = Split(Path, "\")
        If UBound(vSplit) = 2 Then
            If InStr(vSplit(2), str) Then
                FS.CopyFolder vR(i), TargetFolder & vSplit(2)
            End If
        End If
    Next i

    '** Show Root folder's subfolders

    With Sheets.Add ' set Sheets("your sheets's name)
        .UsedRange.Offset(1).ClearContents
        .Range("a2").Resize(n) = WorksheetFunction.Transpose(vR)
    End With
    Erase vR
    n = 0
End Sub
Sub SearchFolder(strRoot As String)
    Dim FS As Scripting.FileSystemObject
    Dim fsFD As Folder
    Dim f As Folder
    Dim p As String

    On Error Resume Next
    p = Application.PathSeparator
    If Right(strRoot, 1) = p Then
    Else
        strRoot = strRoot & p
    End If
    Set FS = New Scripting.FileSystemObject

    Set fsFD = FS.GetFolder(strRoot)
    For Each f In fsFD.SubFolders
        n = n + 1
        ReDim Preserve vR(1 To n)
        With f
            vR(n) = f.Path
        End With
        SearchSubfolder f
    Next f

    Set fsFD = Nothing
    Set FS = Nothing

End Sub
Sub SearchSubfolder(objFolder As Folder)
    Dim sbFolder As Object
    Dim f As Folder
    For Each sbFolder In objFolder.SubFolders
        SearchSubfolder sbFolder
        n = n + 1
        ReDim Preserve vR(1 To n)
        vR(n) = sbFolder.Path
    Next sbFolder

End Sub

目标文件夹图像

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用通配符递归复制文件夹中的文件(文件夹路径中包含通配符)

来自分类Dev

使用FSO创建或删除文件夹

来自分类Dev

具有文件夹路径和通配符的Bash数组

来自分类Dev

在循环文件夹路径中使用通配符

来自分类Dev

如何使用双通配符移动多个文件夹?

来自分类Dev

Logstash文件插件中多个文件夹的路径

来自分类Dev

定义PHP路径的问题跨越多个文件夹

来自分类Dev

创建显示多个文件夹路径的树

来自分类Dev

批处理文件,文件夹路径中的通配符,不知道通配符可以是什么

来自分类Dev

htaccess:通配符文件夹和url

来自分类Dev

通过通配符从git删除文件夹

来自分类Dev

使用通配符从CMD打开文件夹

来自分类Dev

使用通配符移动文件夹

来自分类Dev

ApplescriptObjC文件夹路径

来自分类Dev

替代测试路径(使用凭据)到其他域中的主机的文件夹路径中使用通配符

来自分类Dev

在通配符文件夹中循环并在Bash中执行多个命令

来自分类Dev

如何从查找搜索中排除多个由通配符匹配的文件夹

来自分类Dev

Logstash无法使用多个文件通配符路径

来自分类Dev

终端中文件夹内文件夹的路径

来自分类Dev

在多个文件夹中创建多个文件夹。

来自分类Dev

压缩多个文件夹

来自分类Dev

安装多个文件夹

来自分类Dev

从文件夹获取文件路径

来自分类Dev

更改文件夹中文件的路径

来自分类Dev

在Automator服务中获取多个文件/文件夹的Unix路径

来自分类Dev

使用通配符复制文件夹和文件

来自分类Dev

在子文件夹中删除带有通配符的文件

来自分类Dev

gitignore多个文件夹中的给定文件夹

来自分类Dev

更改多个文件夹(电影)的文件夹图标

Related 相关文章

热门标签

归档