Избройте файлове в папка, използвайки VBA в Microsoft Excel

Anonim

В тази статия ще създадем макрос за изброяване на всички файлове в папката.

При стартиране на макроса името на файла заедно с пътя на файла ще се показва, започвайки от клетка A17.

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

В тази статия създадохме два макроса, „подпапки_файлове“ и „получаване_филелист_в_папка“.
Макросът „subfolder_files“ приема пътя на папката и логическата стойност като входни данни и връща името на файла в папката.

„Getting_filelist_in_folder“ се използва за извикване на макроса „subfolder_files“. Той предоставя стойността на пътя на папката към макроса, като булева стойност е зададена „true“. Също така, когато се изискват имена на файлове в подпапките, тогава присвояваме булева стойност „true“.

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

folder_path = Sheet1.TextBox1.Value
Горният код се използва за извличане на стойност на низ от текстовото поле.

Извикване на подпапки_файлове (път на папката, True)
Горният код се използва за извикване на макроса „subfolder_files“. Той задава пътя на папката и задава свойството „include_subfolder“ вярно.

Задайте fso = CreateObject ("scripting.filesystemobject")
Горният код се използва за създаване на обект на файлова система.

Задайте подпапка1 = fso.getfolder (път_папка)
Горният код се използва за създаване на обекта на определената папка.

За всяка папка 1 В подпапка 1. подпапки
Извикайте subfolder_files (folder1, True)
Следващия
Горният код се използва за преглед на всички подпапки в основната папка.

Dir (folderpath1 & "*.xlsx")
Горният код се използва за получаване на името на Excel файла.

Докато името на файла ""
count1 = count1 + 1
ReDim Запазване на файлов масив (1 За броене 1)
filearray (count1) = име на файл
име на файл = Dir ()
Венд

Горният код се използва за създаване на масив, който се състои от всички имена на файлове, присъстващи в папката.

За i = 1 към UBound (filearray)
Клетки (lastrow, 1) .Value = folderpath1 & filearray (i)
lastrow = lastrow + 1
Следващия

Горният код се използва за присвояване на име на файл в масива на работната книга.

Моля, следвайте кода по -долу

 Опция Explicit Sub subfolder_files (folderpath1 Като вариант, незадължително include_subfolder As Boolean) „Проверка дали да се включи подпапка или не If include_subfolder then„ Деклариране на променливи Dim filename, filearray () As String Dim lastrow, count1, i As Integer “Проверка дали пътеката на папката съдържа обратна наклонена черта като последен знак If Right (folderpath1, 1) "\" Then folderpath1 = folderpath1 & "\" End If "Получаване на името на файла на първия файл в дефинираната пътека filename = Dir (folderpath1 &"*.xlsx ") ' Получаване на номера на ред от последната клетка lastrow = ActiveCell.SpecialCells (xlCellTypeLastCell) .Row + 1 count1 = 0 'Преглеждане на всички файлове в папката count1) = име на файл filename = Dir () Wend On Грешка GoTo last 'Добавяне на име на файл към работната книга За i = 1 Към UBound (filearray) Клетки (lastrow, 1) .Value = folderpath1 & filearray (i) lastrow = lastrow + 1 Next Край, ако е последен: Край на Sub Sub get_filelist_in_folder () „Деклариране на променливи Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object“ Получаване на път на папката folder_path = Sheet1.TextBox1.Value „Проверка дали пътеката на папката съдържа обратна наклонена черта като последен знак If Right (folder_path, 1)" \ "Тогава folder_path = folder_path &" \ "End If" Calling subfolder_files macro Call call subfolder_files (folder_path, True) 'Създаване на обект на обект на файлова система Set fso = CreateObject ("scripting.filesystemobject") Задайте subfolder1 = fso.getfolder (folder_path) "Превръщане през всяка подпапка За всяка папка 

Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта