В этой статье мы создадим макрос для вывода списка всех файлов в папке.

ArrowMain

При запуске макроса имя файла и путь к нему будут отображаться, начиная с ячейки A17.

ArrowOutput

Логическое объяснение

В этой статье мы создали два макроса: «subfolder_files» и «get_filelist_in_folder».

Макрос «subfolder_files» принимает путь к папке и логическое значение в качестве входных данных и возвращает имя файла в папке.

«Get_filelist_in_folder» используется для вызова макроса «subfolder_files». Он предоставляет макросу значение пути к папке с логическим значением «истина». Кроме того, когда требуются имена файлов в подпапках, мы присваиваем логическое значение «истина».

Объяснение кода

folder_path = Sheet1.TextBox1.Value Приведенный выше код используется для извлечения строкового значения из текстового поля.

Вызов subfolder_files (folder_path, True)

Приведенный выше код используется для вызова макроса «subfolder_files». Он назначает путь к папке и устанавливает свойство «include_subfolder» в значение true.

Установите fso = CreateObject («scripting.filesystemobject»)

Приведенный выше код используется для создания объекта файловой системы.

Установить subfolder1 = fso.getfolder (folder_path)

Приведенный выше код используется для создания объекта определенной папки.

Для каждой папки1 В subfolder1.subfolders Вызовите subfolder_files (folder1, True)

Далее Приведенный выше код используется для просмотра всех подпапок в основной папке.

Dir (folderpath1 & «* .xlsx»)

Приведенный выше код используется для получения имени файла Excel.

Хотя filename <> «»

count1 = count1 + 1 ReDim Preserve filearray (1 To count1)

filearray (count1) = filename filename = Dir ()

Wend Приведенный выше код используется для создания массива, который состоит из всех имен файлов, имеющихся в папке.

Для i = 1 To UBound (filearray)

Ячейки (lastrow, 1) .Value = folderpath1 & filearray (i)

lastrow = lastrow + 1 Next Приведенный выше код используется для присвоения имени файла в массиве книге.

Пожалуйста, следуйте за кодом ниже

Option Explicit

Sub subfolder_files(folderpath1 As Variant, Optional include_subfolder As Boolean)

'Checking whether to include subfolder or not

If include_subfolder Then



'Declaring variables

Dim filename, filearray() As String

Dim lastrow, count1, i As Integer



'Checking whether folder path contain backslash as last character

If Right(folderpath1, 1) <> "\" Then

folderpath1 = folderpath1 & "\"

End If



'Getting the filename of the first file in the defined folder path

filename = Dir(folderpath1 & "*.xlsx")



'Getting the row number of last cell

lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1



count1 = 0



'Looping through all the files in the folder

While filename <> ""

count1 = count1 + 1

ReDim Preserve filearray(1 To count1)

filearray(count1) = filename

filename = Dir()

Wend



On Error GoTo last



'Adding file name to workbook

For i = 1 To UBound(filearray)

Cells(lastrow, 1).Value = folderpath1 & filearray(i)

lastrow = lastrow + 1

Next



End If

last:

End Sub

Sub getting_filelist_in_folder()

'Declaring variables

Dim folder_path As String

Dim fso As Object, folder1, subfolder1 As Object

'Getting path of the folder

folder_path = Sheet1.TextBox1.Value

'Checking whether folder path contain backslash as last character

If Right(folder_path, 1) <> "\" Then

folder_path = folder_path & "\"

End If

'Calling subfolder_files macro

Call subfolder_files(folder_path, True)

'Creating object of File system object

Set fso = CreateObject("scripting.filesystemobject")

Set subfolder1 = fso.getfolder(folder_path)

'Looping through each subfolder

For Each folder1 In subfolder1.subfolders

Call subfolder_files(folder1, True)

Next

End Sub

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]