Microsoft Excel에서 VBA를 사용하여 폴더의 파일 나열
이 기사에서는 폴더 내의 모든 파일을 나열하는 매크로를 만듭니다.
매크로를 실행하면 파일 경로와 함께 파일 이름이 A17 셀부터 표시됩니다.
논리 설명
이 기사에서는“subfolder_files”와“getting_filelist_in_folder”라는 두 개의 매크로를 만들었습니다.
“subfolder_files”매크로는 폴더 경로와 부울 값을 입력으로 사용하고 폴더 내의 파일 이름을 반환합니다.
“getting_filelist_in_folder”는 “subfolder_files”매크로를 호출하는 데 사용됩니다. 부울 값이 ‘true’로 설정된 폴더 경로 값을 매크로에 제공합니다. 또한 하위 폴더 내 파일 이름이 필요한 경우 부울 값 ‘true’를 할당합니다.
코드 설명
folder_path = Sheet1.TextBox1.Value 위의 코드는 텍스트 상자에서 문자열 값을 추출하는 데 사용됩니다.
subfolder_files (folder_path, True) 호출
위 코드는 “subfolder_files”매크로를 호출하는 데 사용됩니다. 폴더 경로를 할당하고 “include_subfolder”속성을 true로 설정합니다.
fso = CreateObject ( “scripting.filesystemobject”)
설정 위의 코드는 파일 시스템의 객체를 생성하는 데 사용됩니다.
하위 폴더 설정 1 = fso.getfolder (folder_path)
위 코드는 정의 된 폴더의 객체를 생성하는 데 사용됩니다.
각 폴더 1 하위 폴더 1. 하위 폴더에서 subfolder_files (folder1, True) 호출
다음 위의 코드는 기본 폴더 내의 모든 하위 폴더를 살펴 보는 데 사용됩니다.
Dir (folderpath1 & “* .xlsx”)
위의 코드는 Excel 파일 이름을 가져 오는 데 사용됩니다.
동안 파일 이름 <> “”
count1 = count1 + 1 ReDim Preserve filearray (1 To count1)
filearray (count1) = 파일 이름 파일 이름 = Dir ()
Wend 위의 코드는 폴더 안에있는 모든 파일 이름으로 구성된 배열을 만드는 데 사용됩니다.
For i = 1 To UBound (filearray)
Cells (lastrow, 1) .Value = folderpath1 & filearray (i)
lastrow = lastrow + 1 Next 위 코드는 배열 내의 파일 이름을 통합 문서에 할당하는 데 사용됩니다.
아래 코드를 따르십시오
Option Explicit Sub subfolder_files(folderpath1 As Variant, Optional include_subfolder As Boolean) 'Checking whether to include subfolder or not If include_subfolder Then 'Declaring variables Dim filename, filearray() As String Dim lastrow, count1, i As Integer 'Checking whether folder path contain backslash as last character If Right(folderpath1, 1) <> "\" Then folderpath1 = folderpath1 & "\" End If 'Getting the filename of the first file in the defined folder path filename = Dir(folderpath1 & "*.xlsx") 'Getting the row number of last cell lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1 count1 = 0 'Looping through all the files in the folder While filename <> "" count1 = count1 + 1 ReDim Preserve filearray(1 To count1) filearray(count1) = filename filename = Dir() Wend On Error GoTo last 'Adding file name to workbook For i = 1 To UBound(filearray) Cells(lastrow, 1).Value = folderpath1 & filearray(i) lastrow = lastrow + 1 Next End If last: End Sub Sub getting_filelist_in_folder() 'Declaring variables Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object 'Getting path of the folder folder_path = Sheet1.TextBox1.Value 'Checking whether folder path contain backslash as last character If Right(folder_path, 1) <> "\" Then folder_path = folder_path & "\" End If 'Calling subfolder_files macro Call subfolder_files(folder_path, True) 'Creating object of File system object Set fso = CreateObject("scripting.filesystemobject") Set subfolder1 = fso.getfolder(folder_path) 'Looping through each subfolder For Each folder1 In subfolder1.subfolders Call subfolder_files(folder1, True) Next End Sub
이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.
여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요