ник: akkorn
Добрый день, osmor!
Хочу Вас еще раз потревожить: функция
lstFolders(subFolder.Path) или
Call lstFolders(subFolder.Path)
все равно не работает! Пишет:
"Compile error:
Sub or Function not defined"
(Error 35)
Более того, ваша функция ищет папки ИМЕННО В КОРНЕ ЗАДАННОЙ, а глубже не лезет. Вот посмотрите, я изменил немного код и приведу Вам пример отработки этой функции:
Function a22()
Dim strNameFolder As String
strNameFolder = "c:\"
Dim Str01 As String
' процедура получения всех поддиректорий
Dim subFolder As Object
Dim folder As Object
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(strNameFolder)
For Each subFolder In folder.SubFolders
'Debug.Print subFolder.Path ' <<вследствии ненужности в данной модификации этой функции
'MsgBox subFolder.Path ' <<вследствии ненужности в данной модификации этой функции
'Call lstFolders(subFolder.Path) '<<вследствии невозможности запуска
Str01 = Str01 & " ; " & subFolder.Path
Next
[Form_Form1].Pole1 = Str01
End Function
А вот результат ее работы (из поля формы):
; C:\113 22 ; C:\Config.Msi ; C:\Documents and Settings ; C:\Program Files ; C:\RECYCLER ; C:\System Volume Information ; C:\WINDOWS
Помогите, плиз! Не бросайте на финише .. :-))
=====
Редактирование сообщения:
Опа! Только что заметил: у Вас происходит рекурсивный запуск функции (т.е. функция сама себя запускает много раз, перед тем как первая отрабатывает до конца и освобождает память). Скажите пожалуйста, если задать этой функции диск "c:\", а на компьютере установлена OS WinXP и памяти оперативной 256 мб, - со второго-третьего запуска, я полагаю, пользователь увидит стандартное сообщение Windows "Не достаточно оперативной памяти...".
А в связи с тем, что имя функции я поменял- соответственно все выше приведенные вопросы (кроме последнего) не имеют смысла. Зато последний..
Спасибо Вам, что написали эту функцию за меня
Выскажете, пожалуйста, Ваше мнение- очень хочется услышать.