Список файлов в папку с помощью VBA в Microsoft Excel
В этой статье мы создадим макрос для вывода списка всех файлов в папке.
При запуске макроса имя файла и путь к нему будут отображаться, начиная с ячейки A17.
Логическое объяснение
В этой статье мы создали два макроса: «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]