Файлы к уроку:
Описание
Создадим макросы, которые выводят на листах Excel списки всех файлов в папке, папок и файлов внутри папок.

Решение
Список всех файлов внутри папки
' Перечень файлов внутри папки
Sub get_file_names()
Dim objFSO As Object ' В этой переменной будет объект FileSystemObject
Dim objFolder As Object ' В этой переменной будет объект Folder
' Получаем доступ к файловой системе компьютера
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Создаем объект Folder
Set objFolder = objFSO.GetFolder("c:\Users\timur.kryukov\Downloads\comrade.excel ideas\VBA. Практика. Список всех файлов в папке\Directory\")
' Строка для вывода
row = 2
' Цикл по каждому файлу в папке
For Each file In objFolder.Files
' Имя файла
Cells(row, 1) = file.Name
' Путь к папке
Cells(row, 2) = objFolder
' Переход на следующую строку
row = row + 1
Next file
' Автоподбор ширины
Columns("A").EntireColumn.AutoFit
End Sub
Список всех папок внутри папки
' Перечень папок внутри папки
Sub get_subfolder_names()
Dim objFSO As Object
Dim objFolder As Object
' Получаем доступ к файловой системе компьютера
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Создаем объект Folder
Set objFolder = objFSO.GetFolder("c:\Users\timur.kryukov\Downloads\comrade.excel ideas\VBA. Практика. Список всех файлов в папке\Directory\")
' Строка для вывода
row = 2
' Цикл по каждой папке в папке
For Each folder In objFolder.subfolders
' Вывод имени файла
Cells(row, 1) = folder.Name
' Путь к папке
Cells(row, 2) = folder.Path
' Переход на следующую строку
row = row + 1
Next folder
' Автоподбор ширины
Columns("A").EntireColumn.AutoFit
End Sub
Список всех файлов в папке, папок и файлов внутри папок
' Перечень папок и файлов внутри них
Sub get_subfolder_and_file_names()
Dim objFSO As Object
Dim objFolder As Object
' Получаем доступ к файловой системе компьютера
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Создаем объект Folder
Set objFolder = objFSO.GetFolder("c:\Users\timur.kryukov\Downloads\comrade.excel ideas\VBA. Практика. Список всех файлов в папке\Directory\")
' Строка для вывода
row = 2
' Цикл по каждой папке
For Each subfolder In objFolder.subfolders
' Цикл по каждому файлу
For Each file In subfolder.Files
' Имя папки
Cells(row, 1) = subfolder.Name
' Имя файла
Cells(row, 2) = file.Name
' Путь к файлу/папке
Cells(row, 3) = file.Path
' Переход на следующую строчку
row = row + 1
Next file
Next subfolder
For Each file In objFolder.Files
' Имя папки
Cells(row, 1) = objFolder.Name
' Имя файла
Cells(row, 2) = file.Name
' Путь к файлу
Cells(row, 3) = file.Path
' Переход на следующую строчку
row = row + 1
Next file
End Sub
Примененные функции
- .GetFolder
- Cells
- CreateObject
- For Each
- Scripting.FileSystemObject