메인 컨텐츠로 가기

폴더 및 하위 폴더의 모든 파일을 워크 시트에 나열하는 방법은 무엇입니까?

저자: 샤오양 최종 수정 날짜: 2020-04-28

하위 폴더에있는 파일을 포함하여 폴더의 모든 파일 이름을 워크 시트에 나열 해 본 적이 있습니까? 실제로 Excel에서 폴더 및 하위 폴더의 파일 이름을 직접 나열 할 수있는 방법은 없지만 오늘은이 작업을 해결하는 몇 가지 빠른 트릭을 소개하겠습니다.

VBA 코드로 폴더 및 하위 폴더의 모든 파일 이름 나열

Excel 용 Kutools를 사용하여 폴더 및 하위 폴더의 모든 파일 이름을 빠르고 쉽게 나열하십시오.


일반적으로 Excel에는이 작업을 처리하는 기본 제공 기능이 없지만 다음 VBA 코드를 적용하여이 문제를 해결할 수 있습니다.

1. 파일 이름을 나열 할 새 워크 시트를 활성화합니다.

2. 누르고 ALT + F11 Excel에서 키를 클릭하고 응용 프로그램 용 Microsoft Visual Basic 창.

3. 딸깍 하는 소리 끼워 넣다 > 모듈을 클릭하고 다음 코드를 모듈 창.

VBA 코드 : 폴더 및 하위 폴더의 모든 파일 이름 나열

Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. 모듈에 코드를 붙여 넣은 후 F5 이 코드를 실행하는 키와 매크로 대화 상자가 나타나면 메인리스트 매크로 이름을 클릭 한 다음 달리기 버튼, 스크린 샷 참조 :

폴더 하위 폴더의 문서 목록 파일 1

5. 그리고에 검색 창에서 하위 폴더를 포함한 모든 파일 이름을 나열 할 폴더를 선택하십시오. 스크린 샷을 참조하십시오.

폴더 하위 폴더의 문서 목록 파일 2

6. 폴더를 지정한 후 OK 버튼을 클릭하고 폴더 및 하위 폴더의 모든 파일 이름이 A2 셀의 현재 워크 시트에 나열되었습니다. 스크린 샷을 참조하십시오.

폴더 하위 폴더의 문서 목록 파일 3
1
폴더 하위 폴더의 문서 목록 파일 4

위의 코드를 사용하면 파일 이름 만 나열 할 수 있습니다. 때로는 파일 크기, 파일 유형, 생성 시간, 포함 폴더 등과 같은 다른 속성을 나열해야합니다. Excel 용 Kutools 유용한 기능이 있습니다. 파일명 목록,이 기능을 사용하면 폴더 및 하위 폴더에있는 모든 또는 특정 유형의 파일 이름을 빠르게 나열 할 수 있습니다.

Excel 용 Kutools : 300 개 이상의 편리한 Excel 추가 기능으로 30 일 동안 제한없이 무료로 사용해 볼 수 있습니다..

설치 후 Excel 용 Kutools, 다음 단계를 수행하십시오.

1. 딸깍 하는 소리 Enterprise > 수입 수출 > 파일명 목록, 스크린 샷 참조 :

2. 에서 파일명 목록 대화 상자에서 다음 작업을 수행하십시오.

A: 클릭 폴더 하위 폴더의 문서 목록 파일 7버튼을 눌러 파일 이름을 나열하려는 폴더를 선택하십시오.

B: 목록에서 나열 할 파일 형식을 지정합니다. 파일 유형 섹션;

C: 표시 할 파일 크기 단위를 선택합니다. 파일 크기 단위 안내

주의 사항: 하위 폴더의 파일 이름을 나열하려면 하위 디렉터리에 파일 포함, 당신은 또한 확인할 수 있습니다 숨겨진 파일 및 폴더 포함 당신이 필요로. 확인하면 하이퍼 링크 만들기 옵션을 선택하면 각 파일 이름과 폴더에 대한 하이퍼 링크가 생성됩니다.

지금 다운로드 및 무료 평가판!

3. 그런 다음 OK 버튼을 클릭하면 선택한 폴더 및 하위 폴더에 포함 된 모든 파일이 새 워크 시트에 다음 속성과 함께 표시됩니다. 스크린 샷보기 :

폴더 하위 폴더의 문서 목록 파일 8

이 파일 이름 목록 유틸리티에 대한 자세한 내용을 보려면 클릭하십시오.

Excel 용 Kutools를 지금 다운로드하고 무료로 평가하십시오!


Excel 용 Kutools: 300 개 이상의 편리한 Excel 추가 기능으로 30 일 동안 제한없이 무료로 사용해 볼 수 있습니다. 지금 다운로드 및 무료 평가판!

최고의 사무 생산성 도구

🤖 Kutools AI 보좌관: 다음을 기반으로 데이터 분석을 혁신합니다. 지능형 실행   |  코드 생성  |  사용자 정의 수식 만들기  |  데이터 분석 및 차트 생성  |  Kutools 기능 호출...
인기 기능: 중복 항목 찾기, 강조 표시 또는 식별   |  빈 행 삭제   |  데이터 손실 없이 열이나 셀 결합   |   수식없이 반올림 ...
슈퍼 조회: 다중 기준 VLookup    다중 값 VLookup  |   여러 시트에 걸친 VLookup   |   퍼지 조회 ....
고급 드롭다운 목록: 드롭다운 목록을 빠르게 생성   |  종속 드롭다운 목록   |  다중 선택 드롭 다운 목록 ....
열 관리자: 특정 개수의 열 추가  |  열 이동  |  Toggle 숨겨진 열의 가시성 상태  |  범위 및 열 비교 ...
특색 지어진 특징: 그리드 포커스   |  디자인보기   |   큰 수식 바    통합 문서 및 시트 관리자   |  자료실 (자동 텍스트)   |  날짜 선택기   |  워크 시트 결합   |  셀 암호화/해독    목록으로 이메일 보내기   |  슈퍼 필터   |   특수 필터 (굵게/기울임꼴/취소선 필터링...) ...
상위 15개 도구 세트12 본문 도구 (텍스트 추가, 문자 제거,...)   |   50+ 거래차트 유형 (Gantt 차트,...)   |   40+ 실용 방식 (생일을 기준으로 나이 계산,...)   |   19 삽입 도구 (QR 코드 삽입, 경로에서 그림 삽입,...)   |   12 매출 상승 도구 (숫자를 단어로, 환율,...)   |   7 병합 및 분할 도구 (고급 결합 행, 셀 분할,...)   |   ... 그리고 더

Excel용 Kutools로 Excel 기술을 강화하고 이전과는 전혀 다른 효율성을 경험해 보세요. Excel용 Kutools는 생산성을 높이고 시간을 절약하기 위해 300개 이상의 고급 기능을 제공합니다.  가장 필요한 기능을 얻으려면 여기를 클릭하십시오...

상품 설명


Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
Comments (22)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Is it possible to combine this with your other VBA to include hyperlinks?

e.g. hyperlinks to all files in a folder including subfolders?
This comment was minimized by the moderator on the site
Hello, Johnny,
To list all filenames in a folder and subfolders, and create hyperlinks to these files in an Excel worksheet, please apply the following code:
Sub ListFilesAndCreateHyperlinks()
    Dim FolderPath As String
    Dim OutputRow As Integer
    Dim FileSystem As Object
    Dim TargetFolder As Object
    Dim File As Object
    
    ' Set the path to the folder from which to list files
    FolderPath = "C:\Your\Folder\Path"  ' Change this to the desired folder path
    
    ' Create an instance of the FileSystemObject
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    Set TargetFolder = FileSystem.GetFolder(FolderPath)
    
    ' Initialize the row for output in Excel
    OutputRow = 1
    
    ' Call the recursive procedure to list files and create hyperlinks
    ListFiles TargetFolder, OutputRow
    
    ' Clean up
    Set File = Nothing
    Set TargetFolder = Nothing
    Set FileSystem = Nothing
End Sub

Sub ListFiles(ByVal Folder As Object, ByRef Row As Integer)
    Dim SubFolder As Object
    Dim File As Object
    
    ' List all files in the folder
    For Each File In Folder.Files
        ' Insert the file name
        With ActiveSheet
            .Cells(Row, 1).Value = File.Name
            .Hyperlinks.Add Anchor:=.Cells(Row, 1), Address:=File.Path, TextToDisplay:=File.Name
        End With
        Row = Row + 1  ' Move to the next row
    Next File
    
    ' Recursively list files in subfolders
    For Each SubFolder In Folder.SubFolders
        ListFiles SubFolder, Row
    Next SubFolder
End Sub


Note: Replace "C:\Your\Folder\Path" in the code with the path of the folder from which you want to list files.

Please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Nice work, exactly what I was trying to create. But this is 1000% better.
This comment was minimized by the moderator on the site
Sorry... I gave you the wrong code (below), here is the code I modified..
Code:
Sub MainList()
On Error Resume Next
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Dim answer As Variant
answer = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select a Folder"
.AllowMultiSelect = False
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show = -1 Then
xDir = folder.SelectedItems(1)
Else
Exit Sub
End If
End With

Call ListFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Add a space then the Folder Name to the Worksheet
rowIndex = rowIndex + 1
With Application.ActiveSheet.Cells(rowIndex, 1)
.Value = xFolder.Name
.Font.Size = 12
.Font.FontStyle = "Bold Italic"
End With
rowIndex = rowIndex + 1

For Each xFile In xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
For Each xSubFolder In xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Next xSubFolder
rowIndex = rowIndex + 1
End If

Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing

Call MainList
End Sub


This comment was minimized by the moderator on the site
I have modified your code to make it recycle and re-run the folder dialog continuously until you press Cancel.Unfornatually it generates some errors.1. If subfolders become involved in a folder selected then the next folder selected becomes out of numerical order.2. If subfolders become involved in a folder selected the Cancel button has to be repeated and repeated depending on how many folders you have added.
Code:
Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End SubSub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
For Each xSubFolder In xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub

any ideas ?
This comment was minimized by the moderator on the site
Does it work on MAC too?
There are no comments posted here yet
Load More
Leave your comments
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations