이 기사에서는 폴더 내의 모든 파일을 나열하는 매크로를 만듭니다.

ArrowMain

매크로를 실행하면 파일 경로와 함께 파일 이름이 A17 셀부터 표시됩니다.

ArrowOutput

논리 설명

이 기사에서는“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]로 문의 해주세요