rand(life)
[vba] 특정 폴더의 하위 폴더 이름 가져오기 본문
CreateObject("Scripting.FileSystemObject") 를 이용하는 방법이다. (파란색 글씨가 핵심 부분이다) 출처: https://stackoverflow.com/
Option Explicit
Public Arr() As String
Public Counter As Long
Sub macro()
Dim myArr
strPath = "d:\data\"
myArr = GetSubFolders(strPath)
Counter = 0
End Sub
Function GetSubFolders(RootPath As String)
Dim fso As Object
Dim fld As Object
Dim sf As Object
Dim myArr
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(RootPath)
For Each sf In fld.SUBFOLDERS
ReDim Preserve Arr(Counter)
Arr(Counter) = sf.Path
Counter = Counter + 1
'myArr = GetSubFolders(sf.Path) '이 부분을 넣으면 하위폴더의 하위폴더까지 검색이 된다
Next
GetSubFolders = Arr
Set sf = Nothing
Set fld = Nothing
Set fso = Nothing
End Function
위의 구문을 이용한 예제를 첨부한다. 사실, 이것도 지식인 답변을 하려다 찾은 것이다.
처음에는 잘 되는데, 두 번째 세 번째 반복 실행하면 실제보다 폴더 개수가 더 많이 나오는 현상이 있었다
분석해보니 Counter 변수가 Public이라, 파일을 닫기 전에는 그 이전의 값을 계속 유지하는 것이었다.
코드 맨 마지막에
Counter = 0
초기화를 시켜주니 잘 된다.