【发布时间】: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