Как получить имя папки в excel?

Я пробовал в Excel с помощью макроса, но я не смог получить точные требования.

Например: category – это имя папки. Внутри этой категории у меня есть много папок, таких как AAA BBB CCC DDD EEE

Как получить этот AAA для EEE в excel.

Этот код получит имя каждой папки внутри пути, определенного в ячейке A1 (например, C 🙂 и поместив их в столбец B:

 Sub GetChildFolders() Dim fso, categoryFolder, subFolder As Object Dim i As Integer Set fso = CreateObject("Scripting.FileSystemObject") Set categoryFolder = fso.GetFolder(Cells(1, 1).Value) i = 1 For Each subFolder In categoryFolder.subfolders Cells(i, 2) = subFolder.Name i = i + 1 Next subFolder End Sub 

Альтернативно, вы можете создать новую формулу, которая возвращает список, разделенный запятыми, с папками: (Чтобы создать новую формулу, добавьте новый модуль из меню вставки в окне VBA)

 Function GetChildFoldersList(ByVal path As String) Dim fso, categoryFolder, subFolder As Object Set fso = CreateObject("Scripting.FileSystemObject") Set categoryFolder = fso.GetFolder(path) For Each subFolder In categoryFolder.subfolders GetChildFoldersList = GetChildFoldersList + subFolder.Name + ", " Next subFolder If GetChildFoldersList > 0 Then GetChildFoldersList = Left(GetChildFoldersList, Len(GetChildFoldersList) - 2) Else GetChildFoldersList = "Folder is Empty!" End If End Function 

Это правильно обрабатывает диапазон.

Он не предполагает, что SubFolders возвращает папки в алфавитном порядке. (В документации нет упоминания об этом).

 'Add a reference to 'Microsoft Scripting Runtime' (Tools -> References...) Function ChildFolders(path As String) As String Dim fso As New Scripting.FileSystemObject Dim fldr As Scripting.Folder Set fldr = fso.GetFolder(path) Dim minFolder As String, maxFolder As String minFolder = "" maxFolder = "" Dim x As folder For Each x In fldr.SubFolders If x.Name < minFolder Or minFolder = "" Then minFolder = x.Name ElseIf x.Name > maxFolder Then maxFolder = x.Name End If Next Select Case True Case minFolder = "" And maxFolder = "" ChildFolders = "(No folders)" Case maxFolder = "" ChildFolders = minFolder Case Else ChildFolders = minFolder & " to " & maxFolder End Select End Function 
Interesting Posts

VBA – перемещение большого количества записей – некоторые записи отсутствуют

Как проверить, установлен ли на компьютере установленный Excel (любая версия)?

Как добавить столбец excel в рабочий лист

Повторить код цикла для установки флажков флажков

Как получить количество выбранных строк в excel с помощью java?

Скопировать выделение диапазона в текстовый файл

Коэффициент экстракции из полинома порядка 4 ° в excel по linest

Вставить CSV или данные с разделителями табуляции, чтобы преуспеть без форматирования NO

VBA Excel 2016 – Можно ли импортировать System.Diagnostics, чтобы увидеть, открыт ли процесс, а затем переключиться на него?

Как использовать несколько SQL-команд в одном запросе в Excel

файл не найден comException error

Чтение CSV без форматирования строки в python

Не удается найти числовое значение

Использование VBA для сравнения 2 списков

как импортировать файл excel с django import-export

Давайте будем гением компьютера.