Как получить имя папки в excel?
Я пробовал в Excel с помощью макроса, но я не смог получить точные требования.
Например: category – это имя папки. Внутри этой категории у меня есть много папок, таких как AAA BBB CCC DDD EEE
Как получить этот AAA для EEE в excel.
- Ms Excel - я не могу открыть свой лист базы данных, но сводные листы показывают данные, извлеченные из базы данных
- Использование Excel в качестве базы данных ODBC
- Borland Delphi 7 TExcelApplication.Connect работает на офисных машинах, но не у клиента
- Всякий раз, когда я пытаюсь открыть файл с расширением excel из JAVA, я могу просматривать консенсы только в том случае, если отключить Защищенный просмотр в Excel
- Структура отчета Excel
- Получение итогов столбцов в зависимости от других значений столбца
- Каково собственное имя для проверки строк в Excel Formula?
- Драйвер Windows Explorer превосходит импорт
- Excel - подсчет текстовых вхождений, если строка присутствует в соседнем столбце
- Как перепроектировать проект Excel, который использует макросы и VB во многих местах?
- Как выбрать версию excel, которую win32com.client должен использовать в python?
- Создание правильного формата excel xls
- Java-код работает на Windows, но не на Linux
Этот код получит имя каждой папки внутри пути, определенного в ячейке 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