【问题标题】:VBA search for a specific subfolder in many folders and move all the files in itVBA 在许多文件夹中搜索特定子文件夹并移动其中的所有文件
【发布时间】:2016-05-25 20:34:04
【问题描述】:

你能帮帮我吗?

我想要一个宏 vba,它可以在所有存在的文件夹和子文件夹之间搜索 SPECIFIC 子文件夹,例如 (Xfolder) 并移动它们的文件。

P:\Desktop\Folder1\subfolder\SUBFOLDER1\Xfolder

我正在使用 VBA 脚本运行时对象

  Set  oSourceFolder = fso.GetFolder(source)

    If Dir(destinationFolder, 16) = "" Then MkDir (destinationFolder)
        For Each oFile In oFolder.Files
                If Dir(destinationFolder,16) = "" Then
                    fso.MoveFile oFile.Path, destinationFolder 
                End If

            Next oFile
                           fso.DeleteFolder oFolder.Path

     Next oFolder

【问题讨论】:

  • 你有一个幽灵双引号:If Dir(destinationFolder ", 16) 先解决这个问题
  • 所以你把你的问题从“你能帮我找出这段代码中的问题”变成“你能帮我写代码吗" 这不好。
  • 好的,你又改了。我发表评论时不再有 VBA 代码

标签: vba excel


【解决方案1】:

这里有一个解决方案:

Dim fsoFileSystem As New FileSystemObject
Dim foFolder As Folder, foSubFolder As Folder
Dim fFile As File
Dim strStartFolder As String, strMoveFolder As String, strTargetFolder As String

strStartFolder = "\\A\B\C"
strMoveFolder = "SearchFolder"
strTargetFolder = "\\B\D\E"

Set foFolder = fsoFileSystem.GetFolder(strStartFolder)
For Each foSubFolder In foFolder.SubFolders
    If foSubFolder.Name = strMoveFolder Then
        For Each fFile In foSubFolder.Files
            fsoFileSystem.MoveFile fFile, strTargetFolder & "\"
        Next
    End If
Next

strStartFolder 是要筛选子文件夹的文件夹。 strMoveFolder 是要查找的文件夹的名称。 strTargetFolder 是将 strMoveFolder 的所有文件移动到的文件夹。

【讨论】:

  • 你能解释一下 strStartFolder 吗?我只是把路径放在那里
  • @mitsuki 是的,只需输入您要扫描的文件夹的路径即可。 StrMoveFolder 是您要查找的文件夹的名称。 StrTargetFolder 是移动文件的目标路径。
【解决方案2】:

要找到一些文件夹,请使用类似的东西

Sub findFolder()

    Dim searchFolderName As String
    searchFolderName = "somePath"

    Dim FileSystem As Object

    Set FileSystem = CreateObject("Scripting.FileSystemObject")

    doFolder FileSystem.getFolder(searchFolderName)



End Sub

Sub doFolder(Folder)
    Dim subFolder
    On Error Resume Next
    For Each subFolder In Folder.subfolders
        If Split(subFolder, "\")(UBound(Split(subFolder, "\"))) = "testFolder" Then
            MsgBox "gotcha"
        End
        End If

        doFolder subFolder
    Next subFolder

End Sub

然后您可以对该文件夹及其内容进行任何操作。所以我很少使用谷歌(一个可能是两个词)你可以实现你想要的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2021-05-01
    • 2015-08-04
    • 2017-02-12
    • 2017-07-29
    • 2020-06-15
    • 1970-01-01
    相关资源
    最近更新 更多