【问题标题】:VBA Recursive folder function is missing particular subfoldersVBA 递归文件夹功能缺少特定的子文件夹
【发布时间】:2015-03-04 19:53:50
【问题描述】:

我正在尝试创建一个递归函数,它将每个文件夹(和子文件夹)添加到自定义对象的集合中。我的代码适用于大约 75% 的文件夹/子文件夹,但似乎是随机的从集合中丢失了。

有什么想法吗?

FolderObj 是一个自定义类,我要添加的集合称为 ToPathList

Option Explicit

Sub RecurseFolderList(Foldername As String)
    On Error Resume Next
    Dim FSO, NextFolder
    Dim OriginalRange As Range
    Dim tempFolderObj As FolderObj
    Dim i As Integer
    i = 1
    Set FSO = CreateObject("Scripting.FileSystemObject")

    If Err.Number > 0 Then
    Exit Sub
    End If

    If FSO.FolderExists(Foldername) Then

        Set NextFolder = FSO.GetFolder(Foldername)
        Set FolderArray = NextFolder.subfolders

        For Each NextFolder In FolderArray

            Set tempFolderObj = New FolderObj

            'assign variables to temporary object
            With tempFolderObj
                .ID = i
                .Filename = NextFolder.Name
                .path = NextFolder.path
                .first3ints = first3Non0Ints(NextFolder.Name)
            End With

            'add temporary object to colelction
            Call ToPathList.Add(tempFolderObj, CStr(i))

            i = i + 1

            RecurseFolderList (NextFolder)

        Next

'        Set NextFolder = Nothing
'        Set FolderArray = Nothing

    End If

    Set FSO = Nothing


End Sub

【问题讨论】:

  • 去掉On Error Resume Next 然后你可能会看到你的错误在哪里
  • 感谢您的提示。删除它并没有帮助,但我已经找到了问题所在。我的键 (i) 在函数内部声明,因此每次调用函数时都被重置为“1”。再次感谢

标签: vba excel recursion directory


【解决方案1】:

我的键 (i) 在函数内部声明,因此每次函数递归时都被重置为“1”。

这导致非唯一键,因此某些项目未添加到集合中。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2017-05-14
    相关资源
    最近更新 更多