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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

压缩多个文件夹

来自分类Dev

安装多个文件夹

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

htaccess:通配符文件夹和url

来自分类Dev

从文件夹获取文件路径

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用FSO创建或删除文件夹

来自分类Dev

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

来自分类Dev

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

来自分类Dev

ApplescriptObjC文件夹路径

来自分类Dev

使用通配符移动文件夹

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

更改文件夹中文件的路径

来自分类Dev

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

来自分类Dev

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

Related 相关文章

热门标签

归档