Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2

Получить список названий папок, находящихся в папках, которые находятся в одной папке

02.11.2023, 21:52. Показов 924. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Простите за сумбур. Голова - как чугунный котел без костра. Гудит но не варит.
Нужно собрать названия папок, которые находятся в папках, которые находятся в одной главной папке.
то есть названия папок второго уровня вкладки
Использовал вот такой код, в котором сам плохо разбираюсь. Но он работает для папок, находящихся в главной папке
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Sub Собрать_названия_папок_в папках_из_главной_папки()
Dim fso, myPath, myFolder, myFile, myFiles(), myFolders(), myFolder_1, i
 
myPath = InputBox("Введите путь к главной папке", "Путь", "D:\1")
 
    Set fso = CreateObject("Scripting.FileSystemObject")
 
    Set myFolder = fso.GetFolder(myPath)
 
    If myFolder.subfolders.Count = 0 Then 'этот иф по идее не нужен, ибо будет препятствовать выполнению кода для последующих папок, если в очередной папке не окажется папок
        MsgBox "В папке «" & myPath & "» папок нет."
        Exit Sub
    End If
 
 
ReDim myFolders(1 To myFolder.subfolders.Count)
   
 
    For Each myFolder_1 In myFolder.subfolders
        i = i + 1
'        myFiles(i) = myFile.Path
        Cells(i, 1) = myFolder_1.Name
        Cells(i, 2) = myFolder_1.Size
        Cells(i, 3) = myFolder_1.subfolders.Count
        j = i
' вот эта часть кода не работает
        For Each myFolder_2 In myFolder.subfolders
            Cells(j, 4) = myFolder_2.subfolders.Name
            j = j + 1
        Next
'до этого места бред написан. Дальше работает всё.
 
        
    Next
 
 
End Sub
Термины: главная папка, содержит папки второго уровня, которые содержат паки третьего уровня. Заголовки папок третьего уровня мне нужно собрать в список

Что хочется увидеть в итоге в таблице Excel:
Миниатюры
Получить список названий папок, находящихся в папках, которые находятся в одной папке  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2023, 21:52
Ответы с готовыми решениями:

Получить список из файлов, которые находятся в папке
Добрый день! Подскажите макрос, как получить список из файлов с расширением jpg или png, которые находятся в папке c:\Documents and...

Получить список папок в папке но не в подпапках
Здравствуйте. Как можно получить список имен папок и их количество в определенной папке но не в подпапках тоесть просто список папок...

Как получить список имён файлов и папок находящихся в данном каталоге?
В матлабе есть какая-либо команда, позволяющая получить имена файлов и папок, находящихся в указанной папке? Поиски в интернете пока...

3
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2
03.11.2023, 01:22  [ТС]
Пришлось ручками

Добавлено через 18 секунд
В принципе уже всё и обработалось
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,671
03.11.2023, 02:19
Visual Basic
1
For Each myFolder_2 In myFolder_1.subfolders
1
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
03.11.2023, 14:39
Лучший ответ Сообщение было отмечено AndreA SN как решение

Решение

AndreA SN,
вот вариант VBA
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub rrr()
    BoxIn = InputBox("Введите путь к главной папке", "Путь", "D:\CMD_Forum")
    Columns("A:AA").Delete Shift:=xlToLeft
    AllFolders CreateObject("Scripting.FileSystemObject"), BoxIn, 0, 0
    Columns("A:AA").EntireColumn.AutoFit
End Sub
 
Sub AllFolders(FSO, inDir, i, ii)     ' ---------------------------------------------
    Set F = FSO.GetFolder(inDir)
    Set SubF = F.SubFolders
    If i = 0 Then
        Range("A1").Offset(i, 0) = F.Path
        i = i + 1
    Else
        Arr = Split(F.Path, "\")
        j = UBound(Arr, 1)
        If j > ii Then i = i - 1
        ii = j
        Range("A1").Offset(i, ii - 1) = Arr(ii)
    End If
    i = i + 1
    For Each Folder In SubF
        AllFolders FSO, inDir + "\" + Folder.Name, i, ii
    Next
End Sub
Вот вариант VBS-скрипта. Сделайте на него на рабочем столе иконку и мышкой затягивайте на него папку
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
With wscript.Arguments
    If .Count = 0 Then
        MsgBox "This script must be run with path of folder", 16
        wscript.Quit
    End If
    BoxIn = .Item(0)
End With
 
Set XLS = CreateObject("Excel.Application")
With XLS
    .Visible = True 'False
    .Workbooks.Add
End With
 
AllFoldersVBS CreateObject("Scripting.FileSystemObject"), BoxIn, 0, 0, XLS
XLS.Columns("A:AA").EntireColumn.AutoFit
 
Sub AllFoldersVBS(FSO, inDir, i, ii, XLS)    ' ---------------------------------------------
    Set F = FSO.GetFolder(inDir)
    Set SubF = F.SubFolders
    If i = 0 Then
        XLS.Range("A1").Offset(i, 0) = F.Path
        i = i + 1
    Else
        Arr = Split(F.Path, "\")
        j = UBound(Arr, 1)
        If j > ii Then i = i - 1
        ii = j
        XLS.Range("A1").Offset(i, ii - 1) = Arr(ii)
    End If
    i = i + 1
    For Each Folder In SubF
        AllFoldersVBS FSO, inDir + "\" + Folder.Name, i, ii, XLS
    Next
End Sub
AndreA SN, В CMD задача решается одной командой
Windows Batch file
1
2
3
4
5
6
@Echo Off &cls
    If "%~1"=="" (Echo ??? folder name must be specified in the script arguments! &Pause &Exit /B 2)
    Pushd "%~1" ||(Echo !!! Folder "%~1" not found &Pause &Exit /B 2) 
     >"%~dpnx0.log" Tree /A "%~1"
    Edit.com "%~dpnx0.log"
Exit /B
На батник тоже можно сделать иконку или в аргументе при запуске указывать путь папки
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2023, 14:39
Помогаю со студенческими работами здесь

как можно получить список файлов и папок в указанной папке?
Привет всем. Хочу короче, сделать shell extention. Но мне надо сделать меню, которое содержит _ВСЕ_ файлы и директории указаной...

Требуется получить список всех вложенных папок (с полными их путями) в данной локальной папке.
Требуется получить список всех вложенных папок (с полными их путями) в данной локальной папке. Заранее спасибо.

Как получить список папок в одной директории ?
IDLE (Python 3.10 64-bit) Windows 10 ————————— Нужны только названия папок, которые построчно запишутся в файл: out_ok.txt Вот...

Как получить список всех контролов которые находятся в groupbox
Здравствуйте .Подскажите пожалуйста как можно получить список контролов в групбоксе( так чтобы потом ими можно было управлять, там например...

Удаление папок в папках, которые имеют файлы
Всем привет, доброго времени суток. У меня есть такая проблема, на игровом сервере создаются папки с огромными файлами. Путь у всех такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru