Сообщение об ошибке пытается сообщить вам, что list
является коллекцией типа FolderItems3
. Коллекция представляет элементы в папке, поэтому вы не можете просто добавить в нее материал. Если вы хотите создать комбинированный список элементов из двух или более папок, вам нужно сделать list
обычным массивом и добавить в него элементы из всех папок:
fontSourcePaths = Array("C:\Fonts", "C:\Fonts2")
ReDim list(-1) 'inintialize empty array
For Each dir In fontSourcePaths
Set ns = objShell.Namespace(dir)
For Each f In ns.Items
If objFSO.FileExists(f.Path) Then
ReDim Preserve list(UBound(list)+1)
Set list(UBound(list)) = f
End If
Next
Next
Настройте условие для добавления элементов в массив по мере необходимости.
Обратите внимание, что добавление массива в цикл является дорогой операцией, которую следует использовать только в том случае, если количество элементов невелико. Для больших чисел вы получите лучшую производительность, используя что-то вроде словаря:
Set dict = CreateObject("Scripting.Dictionary")
For Each dir In fontSourcePaths
Set ns = objShell.Namespace(dir)
For Each f In ns.Items
dict(f) = True
Next
Next
list = dict.Keys
или ArrayList:
Set list = CreateObject("System.Collections.ArrayList")
For Each dir In fontSourcePaths
Set ns = objShell.Namespace(dir)
For Each f In ns.Items
list.Add f
Next
Next