Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Определение названий подпапок и их размещение на листе - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Определение названий подпапок и их размещение на листе
OlegSmirnov Дата: Среда, 15.11.2017, 08:16 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброе утро, уважаемые знатоки.
Помогите решить проблему.

У меня есть скрипт, выводящий названия каталогов и подкаталогов - с небольшим отступом по ячейке - для каждого уровня вложенности.
Но работать с этим скриптом - неудобно.

В другом файле - на листе в ячейку E5 - вписана папка, которая лежит рядом с файлом книги.
В некоторые места листа - в синие ячейки - вписаны названия подпапок, лежащие в главном каталоге (том, что вписан в ячейку E5).

Как макросом - щелкнув по кнопке - вписать под синими ячейками с названиями подпапок - названия каталогов третьего уровня ?
(То есть названия тех папок, которые находятся внутри подпапок)
(Иными словами - название главного каталога - имеется в E5, названия подпапок в этом каталоге - тоже имеются в синих ячейках. Нужно только определить названия каталогов, которые вложены в подпапки)

В прикрепленном файле показал - куда примерно выписываются названия каталогов)
К сообщению приложен файл: 0989848.jpg (33.0 Kb) · 2798043.rar (32.9 Kb)
 
Ответить
СообщениеДоброе утро, уважаемые знатоки.
Помогите решить проблему.

У меня есть скрипт, выводящий названия каталогов и подкаталогов - с небольшим отступом по ячейке - для каждого уровня вложенности.
Но работать с этим скриптом - неудобно.

В другом файле - на листе в ячейку E5 - вписана папка, которая лежит рядом с файлом книги.
В некоторые места листа - в синие ячейки - вписаны названия подпапок, лежащие в главном каталоге (том, что вписан в ячейку E5).

Как макросом - щелкнув по кнопке - вписать под синими ячейками с названиями подпапок - названия каталогов третьего уровня ?
(То есть названия тех папок, которые находятся внутри подпапок)
(Иными словами - название главного каталога - имеется в E5, названия подпапок в этом каталоге - тоже имеются в синих ячейках. Нужно только определить названия каталогов, которые вложены в подпапки)

В прикрепленном файле показал - куда примерно выписываются названия каталогов)

Автор - OlegSmirnov
Дата добавления - 15.11.2017 в 08:16
Manyasha Дата: Среда, 15.11.2017, 10:22 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
OlegSmirnov, здравствуйте, попробуйте так:
[vba]
Код
Dim c&, r&

Sub Main()
    DirList ThisWorkbook.Path
End Sub

Sub DirList(Dstart As String)
    Dim startFold As Object, myFSO As Object
    Dim subFold, f, mainFold As String
    subFold = Array("e13", "e22", "i13") 'Массив ячеек, где вписаны подпапки
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Dstart = Dstart & "\" & [e5]

    For Each f In subFold
        mainFold = Dstart & "\" & Range(f)
        Set startFold = myFSO.GetFolder(mainFold)
        r = Range(f).Row - 1: c = Range(f).Column - 1
        If Range(f).CurrentRegion.Columns.Count > 1 Then
            Range(f).CurrentRegion.Offset(, 1).Resize(, Range(f).CurrentRegion.Columns.Count - 1).ClearContents
        End If
        ScanFolder startFold
    Next f
End Sub

Sub ScanFolder(Fold As Object)
Dim fol As Object
    r = r + 1
    c = c + 1
    Cells(r, c) = Fold.Name
    For Each fol In Fold.SubFolders
        ScanFolder fol
    Next
    c = c - 1
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеOlegSmirnov, здравствуйте, попробуйте так:
[vba]
Код
Dim c&, r&

Sub Main()
    DirList ThisWorkbook.Path
End Sub

Sub DirList(Dstart As String)
    Dim startFold As Object, myFSO As Object
    Dim subFold, f, mainFold As String
    subFold = Array("e13", "e22", "i13") 'Массив ячеек, где вписаны подпапки
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Dstart = Dstart & "\" & [e5]

    For Each f In subFold
        mainFold = Dstart & "\" & Range(f)
        Set startFold = myFSO.GetFolder(mainFold)
        r = Range(f).Row - 1: c = Range(f).Column - 1
        If Range(f).CurrentRegion.Columns.Count > 1 Then
            Range(f).CurrentRegion.Offset(, 1).Resize(, Range(f).CurrentRegion.Columns.Count - 1).ClearContents
        End If
        ScanFolder startFold
    Next f
End Sub

Sub ScanFolder(Fold As Object)
Dim fol As Object
    r = r + 1
    c = c + 1
    Cells(r, c) = Fold.Name
    For Each fol In Fold.SubFolders
        ScanFolder fol
    Next
    c = c - 1
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 15.11.2017 в 10:22
OlegSmirnov Дата: Среда, 15.11.2017, 12:06 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, нормально.
Большое спасибо за код.
 
Ответить
СообщениеManyasha, нормально.
Большое спасибо за код.

Автор - OlegSmirnov
Дата добавления - 15.11.2017 в 12:06
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!