VBA오빠두님의 Listfiles함수 중에

VBA
작성자
H.B
작성일
2022-01-26 18:20
조회
128
엑셀버전 : M365

운영체제 : 윈도우10

안녕하세요.

하기와 같이 오빠두님의 특정경로내 모든 파일의 List를 가져와서 가공하는 작업을 하고 있습니다.

그런데 오빠두님의 하기 VBA 함수는 모든 sPath경로내의 파일을 가져오는데요, 파일내에 .db 나 엑셀이외의

다른 확장자는 받아오지말고, 오직 xlsx만 가져오고 싶은데, 함수부분 중에 어떤 부분을 바꾸면 좋을지....

도움 부탁드립니다.

(함수는 오빠두 사이트있는 내용그대로 입니다만)

Arr = ListFiles(sPath, True, True)  'sPath폴더 경로내의 파일 list

그리고 for 문 중에 만약 다른 파일확장자이면, 다음 arr로 넘어가게 하고 싶은데, 하기로 하니까 틀리네요..

어떤 문을 쓰면 될런지...

IF arr(i) = "*.db" then

go to 0 (이부분서 다음 arr순번으로 넘어가게 하고싶습니다만)

end if

 

'▶ ListFiles 함수
'▶ 선택한 폴더의 파일목록을 배열로 반환합니다.
'▶ 인수 설명
'_____________sPath     : 파일목록을 출력할 폴더입니다.
'_____________withPath  : TRUE일 경우 폴더 경로를 함께 표시합니다. 기본값은 FALSE 입니다.
'_____________includeChild  : TRUE일 경우 하위 폴더의 파일도 모두 포함하여 출력합니다. 기본값은 FALSE 입니다.
'###############################################################
 
Function ListFiles(sPath As String, Optional withPath As Boolean = False, Optional includeChild As Boolean = False)
 
' 변수를 선언합니다.
Dim dictFiles As Object
Dim Arr As Variant
Dim i As Long: Dim x As Long
Dim STR As String
Set dictFiles = CreateObject("Scripting.Dictionary")
 
STR = Sheets(1).Range("b2")
' 폴더 내 파일 경로를 Dictionary 에 추가합니다.
ListFiles_Routine dictFiles, STR, True, includeChild
 
' Dictionary가 비어있을 경우 #NULL 오류를 반환하고 그렇지 않을 경우 다음 단계로 넘어갑니다.
On Error GoTo EH:
ReDim Arr(1 To dictFiles.Count)
 
' Dictionary를 배열로 변환합니다.
Arr = dictFiles.items
 
' withPath가 False일 경우 폴더 경로를 제거합니다.
If withPath = False Then
        For x = LBound(Arr) To UBound(Arr)
            i = InStrRev(Arr(x), "\")
            Arr(x) = Mid(Arr(x), i + 1, Len(Arr(x)))
        Next
End If
 
' 파일 경로를 반환 후 함수를 종료합니다.
ListFiles = Arr
 
Exit Function
 
EH:
ListFiles = "#NULL!"
 
End Function
Sub ListFiles_Routine(dict As Object, sPath As String, Optional withPath As Boolean = False, Optional includeChild As Boolean = True)
 
Dim oFSO As Object: Dim oFolder As Object: Dim oFiles As Object: Dim oFile As Object
Dim oSubFolder As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sPath)
Set oFiles = oFolder.Files
 
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
 
For Each oFile In oFiles
    If withPath = False Then dict.Add oFile.Name, oFile.Name Else: dict.Add sPath & oFile.Name, sPath & oFile.Name
Next
 
If includeChild = True Then
    For Each oSubFolder In oFolder.SubFolders
        ListFiles_Routine dict, sPath & oSubFolder.Name, True, True
    Next
End If
 
End Sub

 

전체 4

  • 2022-01-27 18:44

    답변달아주셔서 감사합니다. 아직 정확하게는 여러가지 시험해보고 있습니다만, 수이니님의 답변으로 공부해보겠습니다 . 채택먼저해드릴꼐요~~


    • 2022-01-28 19:37

      @H.B 님 하위폴더가 한번만 존재하나요? 아니면 하위폴더 안에 또 폴더가 있나요?


  • 2022-01-26 19:54
    채택된 답변

    확장자를 분리해주는 오빠두엑셀 함수 SplitFileExt 를 사용하여 수정해 보았습니다.

    첨부파일을 참고하여 응용하시면 될것 같아요.

    첨부파일 : 오빠두엑셀-VBA-예제-ListFiles-명령문.xlsm


  • 2022-01-27 09:27

    수이니님 감사합니다. 죄송합니다만, 알려주신 파일로 시험해봤습니다만, 원래 Listfile함수의 하위폴더에 있는 항목까지 가져오는 기능이 없어져서, 하위폴더 내부의 경로는 지정못하는 문제가 있었습니다. 상기 제 질문란의 함수에는 있는데요. 혹시 상기 질문란의 함수에서 어떻게 바꿔야할지.... 알수있을까요?


전체 6,494
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[🏆 진짜쓰는 실무엑셀 스터디] 1기 - 우수 졸업생 및 후기, 축하합니다! (8)
오빠두엑셀 | 2022.04.30 | 추천 10 | 조회 1318
오빠두엑셀 2022.04.30 10 1318
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (65)
오빠두엑셀 | 2021.10.28 | 추천 81 | 조회 4652
오빠두엑셀 2021.10.28 81 4652
34504 피벗테이블
New 피벗테이블로 가공한 데이터 표양식 열기준으로 변경 가능 문의 첨부파일
우왕 | 13:19 | 추천 0 | 조회 7
우왕 13:19 0 7
34502 함수/공식
New 수식 오류 (2) 답변완료
kh**** | 05:08 | 추천 0 | 조회 20
kh**** 05:08 0 20
34499 VBA
New 이주일간의 고생 끝에 해결이 코앞인데요.
silverf**** | 2022.05.28 | 추천 0 | 조회 26
silverf**** 2022.05.28 0 26
34497 함수/공식
New 데이터 배열 바꾸기 (4) 답변완료
이지현한의사 | 2022.05.28 | 추천 0 | 조회 30
이지현한의사 2022.05.28 0 30
34494 파워쿼리/피벗
New 엑셀 계정별원장 시트 합치기 방법 문의 드립니다.
우렁각시탈 | 2022.05.28 | 추천 0 | 조회 21
우렁각시탈 2022.05.28 0 21
34492 VBA
New 엑셀에 드래그 앤 드롭으로 그림파일 삽입 (5)
banarchy | 2022.05.28 | 추천 0 | 조회 36
banarchy 2022.05.28 0 36
34477 문서서식
New 수식 복사 질문드려요.. ㅠㅠ 불금 퇴근하고싶습니다... 첨부파일 (3) 답변완료
김동률 | 2022.05.27 | 추천 0 | 조회 41
김동률 2022.05.27 0 41
34473 VBA
New 비고란에서 휴대폰번호 추출하기에 관해 문의드립니다. 첨부파일 (2) 답변완료
수메리안 | 2022.05.27 | 추천 0 | 조회 39
수메리안 2022.05.27 0 39
34472 기능/도구
New 스핀단추에서 증분변경시 0.1 씩 증감할려면 어떻게 해야 할까요? (1)
033cola | 2022.05.27 | 추천 0 | 조회 28
033cola 2022.05.27 0 28
34471 함수/공식
New 조건부서식 중복 2개이상 및 2개일때 서식좀 봐주세요 궁금합니다. 첨부파일 (3)
김주현 | 2022.05.27 | 추천 0 | 조회 44
김주현 2022.05.27 0 44
34469 문서서식
New 표의 행렬 변경 첨부파일 (4)
김학준 | 2022.05.27 | 추천 0 | 조회 40
김학준 2022.05.27 0 40
34465 차트/그래프
New 간트차트에 오늘 표시하는 방법 질문드려요
yoyoy**** | 2022.05.27 | 추천 0 | 조회 31
yoyoy**** 2022.05.27 0 31
34464 VBA
New Vba로 수식을 입력하려는데 오류가 납니다. (4)
silverf**** | 2022.05.27 | 추천 0 | 조회 45
silverf**** 2022.05.27 0 45
34451 함수/공식
New 제품별 코드 중복/단독 확인함수 첨부파일 (2)
다은지후아빠 | 2022.05.27 | 추천 -1 | 조회 48
다은지후아빠 2022.05.27 -1 48
34450 VBA
New VBA를 활용한 최단거리 계산(Pathfinder,카카오맵) 첨부파일
darc**** | 2022.05.27 | 추천 0 | 조회 37
darc**** 2022.05.27 0 37
34448 함수/공식
New countif 다양한 조건으로 만들고 싶어요~ 첨부파일 (2) 답변완료
김수달 | 2022.05.27 | 추천 0 | 조회 48
김수달 2022.05.27 0 48
34444 기능/도구
New 엑셀 빠른 도구 모음에 있는 '조명'이 무슨 기능인지 아시는분 계신가요?
월마리아 | 2022.05.26 | 추천 0 | 조회 46
월마리아 2022.05.26 0 46
34440 함수/공식
New 고객 리텐션, 접속 일수에 맞춰 데이터를 합산하는 함수/VBA 문의! 첨부파일
은혼 | 2022.05.26 | 추천 0 | 조회 22
은혼 2022.05.26 0 22
34439 차트/그래프
New 체크박스 선택에 따라 값이 바뀌는 차트의 데이터레이블 표시 문제 관련 첨부파일
Qwerty | 2022.05.26 | 추천 0 | 조회 26
Qwerty 2022.05.26 0 26
34437 함수/공식
New 국가만 찾아 올련면 첨부파일 (4) 답변완료
구름나그네 | 2022.05.26 | 추천 0 | 조회 42
구름나그네 2022.05.26 0 42
34433 함수/공식
New 함수관련 질문있습니다.
섭섭섭 | 2022.05.26 | 추천 0 | 조회 32
섭섭섭 2022.05.26 0 32
34427 함수/공식
New 특정 공휴일 제외 후 2달 뒤 날짜를 구할수 있는 함수 식이 있을까요? (1)
김태우 | 2022.05.26 | 추천 0 | 조회 42
김태우 2022.05.26 0 42
34417 피벗테이블
피벗테이블 외부 데이터 참조 후 새로고침 할 때 자꾸 암호를 입력하라고 떠요.. (2) 답변완료
forest choi | 2022.05.26 | 추천 0 | 조회 35
forest choi 2022.05.26 0 35
34416 함수/공식
날짜/시간 차이를 구하려면 어떻게 하면 좋을까요? 첨부파일 (2)
aron007 | 2022.05.26 | 추천 0 | 조회 41
aron007 2022.05.26 0 41
34415 VBA
VBA코드로 자동채우기 할때 유동범위는 어떻게 하나요 첨부파일 (2)
nam**** | 2022.05.26 | 추천 1 | 조회 41
nam**** 2022.05.26 1 41
34414 함수/공식
금지어 삭제하는 함수 (특정텍스트 범위내의 값을 제거 후 값 불러오기) 첨부파일 (1)
Jasper | 2022.05.26 | 추천 0 | 조회 42
Jasper 2022.05.26 0 42
34406 함수/공식
sum 함수 오류? 첨부파일 (1)
saechang | 2022.05.25 | 추천 0 | 조회 53
saechang 2022.05.25 0 53
34405 VBA
중복데이터가 많은데 맨 위에 있는 행의 데이터만 남길 수 있는 방법이 있을까요? 첨부파일 (3) 답변완료
오구 | 2022.05.25 | 추천 0 | 조회 69
오구 2022.05.25 0 69
34402 VBA
vba 특정문자 입력시 현재시간 구동 관련 첨부파일 (2)
1412 | 2022.05.25 | 추천 0 | 조회 46
1412 2022.05.25 0 46
34400 함수/공식
다른 셀 값 참조시 결과값이 0으로만 나오는 현상 문의 첨부파일 (3) 답변완료
forest choi | 2022.05.25 | 추천 0 | 조회 48
forest choi 2022.05.25 0 48