Страницы: 1
RSS
Получение списка только имен папок из пути в ячейки
 
Добрый день!

Никак не могу заставить макрос из приема "Список файлов в папке" заставить выдавать только имена папок, выводить их в другой диапазон задаваемый, и чтобы путь брался из определенной ячейки.
https://www.planetaexcel.ru/techniques/3/45/https://www.planetaexcel.ru/techniques/3/45/

Sub FileList()    Dim V As String
   Dim BrowseFolder As String
   
   'открываем диалоговое окно выбора папки
   With Application.FileDialog(msoFileDialogFolderPicker)
       .Title = "Выберите папку или диск"
       .Show
       On Error Resume Next
       Err.Clear
       V = .SelectedItems(1)
       If Err.Number <> 0 Then
           MsgBox "Вы ничего не выбрали!"
           Exit Sub
       End If
   End With
   BrowseFolder = CStr(V)
   
   'добавляем лист и выводим на него шапку таблицы
   ActiveWorkbook.Sheets.Add
   With Range("A1:E1")
       .Font.Bold = True
       .Font.Size = 12
   End With
   Range("A1").Value = "Имя файла"
   Range("B1").Value = "Путь"
   Range("C1").Value = "Размер"
   Range("D1").Value = "Дата создания"
   Range("E1").Value = "Дата изменения"
   
   'вызываем процедуру вывода списка файлов
   'измените True на False, если не нужно выводить файлы из вложенных папок
   ListFilesInFolder BrowseFolder, True
End Sub


Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean)

   Dim FSO As Object
   Dim SourceFolder As Object
   Dim SubFolder As Object
   Dim FileItem As Object
   Dim r As Long

   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set SourceFolder = FSO.getfolder(SourceFolderName)

   r = Range("A65536").End(xlUp).Row + 1   'находим первую пустую строку
   'выводим данные по файлу
   For Each FileItem In SourceFolder.Files
       Cells(r, 1).Formula = FileItem.Name
       Cells(r, 2).Formula = FileItem.Path
       Cells(r, 3).Formula = FileItem.Size
       Cells(r, 4).Formula = FileItem.DateCreated
       Cells(r, 5).Formula = FileItem.DateLastModified
       r = r + 1
       X = SourceFolder.Path
   Next FileItem
   
   'вызываем процедуру повторно для каждой вложенной папки
   If IncludeSubfolders Then
       For Each SubFolder In SourceFolder.SubFolders
           ListFilesInFolder SubFolder.Path, True
       Next SubFolder
   End If

   Columns("A:E").AutoFit

   Set FileItem = Nothing
   Set SourceFolder = Nothing
   Set FSO = Nothing

End Sub

Прошу Вашей помощи!
 
Как получить список папок в заданной директории
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо, но не смог разобраться, т.к. там по моему не excel VBA. либо я ошибаюсь, если есть возможность объясните, как применить её к моей задаче пожалуйста.
 
Код
Sub ListFilesInFolder()

   Dim SourceFolder As Object
   Dim FolderItem As Object
   Dim r As Long
   
   Set SourceFolder = CreateObject("Scripting.FileSystemObject").GetFolder(Worksheets("Лист1").Range("A1").Value)
   Columns("B").Clear
   r = 1
   
   For Each FolderItem In SourceFolder.SubFolders
       Cells(r, 2).Formula = FolderItem.Name
       r = r + 1
   Next
   Columns("B").AutoFit
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, божественно!!! Огромное Вам спасибо!!! Вы лучше всех!!! :)  
 
:D  
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх