매크로을 사용하여 Excel에서 시도했지만 정확한 요구 사항을 얻을 수 없습니다.Excel에서 폴더 이름을 얻는 방법은 무엇입니까?
예 : category는 폴더 이름입니다. 이 범주의 내부에서 나는이 AAA Excel에서을 EEE 갈 수있는 방법 AAA BBB CCC DDD EEE
같은 많은 폴더가 있습니다.
매크로을 사용하여 Excel에서 시도했지만 정확한 요구 사항을 얻을 수 없습니다.Excel에서 폴더 이름을 얻는 방법은 무엇입니까?
예 : category는 폴더 이름입니다. 이 범주의 내부에서 나는이 AAA Excel에서을 EEE 갈 수있는 방법 AAA BBB CCC DDD EEE
같은 많은 폴더가 있습니다.
이 코드는 예를 들어, C (셀 A1에 정의 된 경로 내의 모든 폴더의 이름을 얻을 것이다 :) 및 열 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
Alterantively, 당신은을 반환하는 새로운 수식을 만들 수 있습니다 합니다 (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
** Microsoft Scripting Runtime ** (** Tools -> References ... **)에 대한 참조를 추가 한 다음 'Dim fso As New Scripting.FileSystemObject'라고 쓸 수 있습니다. –
'fso'와'categoryFolder'는'Variant'로 타이핑됩니다. 그것들을'Object'로 타이핑하기 위해서는 각 변수에 대해'As Object'를 반복해야합니다 :'Dim fso As Object, categoryFolder As Object, subFolder As Object'. –
T : 쉼표는 폴더와 구분 된 목록 그의 범위를 제대로 처리합니다.
SubFolders가 알파벳 순서로 폴더를 반환한다고 가정하지 않습니다. (documentation에는 이런 일에 대한 언급이 없습니다).
'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
이 경우 Dir()을 사용할 수 있습니다. –
폴더를 건너 뛴 경우 어떻게됩니까? 'AAA','BBB','DDD','EEE'? –