VBA搜索文件夹的子文件夹

时间:2015-05-22 14:45:52

标签: vba excel-vba recursion access-vba file-exists

我正在尝试使用Access 2003找到一种方法(是的,我知道这很古老),搜索文件夹的所有子目录以确定文件是否存在。如果发现它需要输入一个打开或关闭按钮的子。我还希望能够保存路径,因为我需要此按钮来链接到文件。所以作为一个简短的解释,使用Access我想在一个文件夹中搜索一个具有子文件夹的驱动器,每个子文件夹都有自己的子文件夹。我找到了很多网站,包括以下网站,但没有一个答案似乎有效。 Loop Through All Subfolders Using VBA

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

`Dim FileSystem As Object Dim HostFolder As String

HostFolder =“C:\”

设置FileSystem = CreateObject(“Scripting.FileSystemObject”) DoFolder FileSystem.GetFolder(HostFolder)

Sub DoFolder(文件夹)     昏暗的SubFolder     对于Folder.SubFolders中的每个子文件夹         DoFolder SubFolder     下一个     昏暗的文件     对于Folder.Files中的每个文件         '操作每个文件     下一个 结束Sub` 给我一个无效的过程,并说错误是在我使用的主机文件夹中。但是,它与我用于其他代码样本的问题相同。

    Public Sub NonRecursiveMethod()
    Dim fso, oFolder, oSubfolder, oFile, queue As Collection

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set queue = New Collection
    queue.Add fso.GetFolder("your folder path variable") 'obviously replace

    Do While queue.Count > 0
        Set oFolder = queue(1)
        queue.Remove 1 'dequeue
        '...insert any folder processing code here...
        For Each oSubfolder In oFolder.SubFolders
            queue.Add oSubfolder 'enqueue
        Next oSubfolder
        For Each oFile In oFolder.Files
            '...insert any file processing code here...
        Next oFile
    Loop

End Sub

给我一​​个错误,因为根据Access VBA,最后一个不在for循环中。 我找到了另一个能够工作的代码。它来自网站 http://www.ammara.com/access_image_faq/recursive_folder_search.html 但是,这非常慢。运行还需要30秒,当一切都在一个文件夹中时,一个简单的目录检查将是即时的。感谢那些提供帮助的人。