Trong bài viết này, chúng tôi sẽ tạo một macro để liệt kê tất cả các tệp trong thư mục.

ArrowMain

Khi chạy macro, tên tệp cùng với đường dẫn tệp sẽ hiển thị bắt đầu từ ô A17.

ArrowOutput

Giải thích logic

Trong bài viết này, chúng tôi đã tạo hai macro, “subfolder_files” và “get_filelist_in_folder”.

Macro “subfolder_files” lấy đường dẫn thư mục và giá trị boolean làm đầu vào và trả về tên tệp trong thư mục.

“Get_filelist_in_folder” được sử dụng để gọi macro “subfolder_files”. Nó cung cấp giá trị đường dẫn thư mục tới macro, với giá trị boolean được đặt là ‘true’. Ngoài ra, khi tên tệp trong các thư mục con được yêu cầu, thì chúng tôi chỉ định giá trị boolean ‘true’.

Giải thích mã

folder_path = Sheet1.TextBox1.Value Đoạn mã trên được sử dụng để trích xuất giá trị chuỗi từ hộp văn bản.

Gọi subfolder_files (folder_path, True)

Đoạn mã trên được sử dụng để gọi macro “subfolder_files”. Nó chỉ định đường dẫn thư mục và đặt thuộc tính “include_subfolder” là true.

Đặt fso = CreateObject (“scripting.filesystemobject”)

Đoạn mã trên được sử dụng để tạo đối tượng của hệ thống tệp.

Đặt subfolder1 = fso.getfolder (folder_path)

Đoạn mã trên được sử dụng để tạo đối tượng của thư mục được xác định.

Đối với mỗi thư mục1 Trong thư mục con1. subfolder Gọi subfolder_files (thư mục1, True)

Tiếp theo Đoạn mã trên được sử dụng để xem qua tất cả các thư mục con, trong thư mục chính.

Dir (folderpath1 & “* .xlsx”)

Đoạn mã trên được sử dụng để lấy tên tệp excel.

Trong khi tên tệp <> “”

count1 = count1 + 1 ReDim Lưu trữ filearray (1 Đến đếm1)

filearray (count1) = filename filename = Dir ()

Wend Đoạn mã trên được sử dụng để tạo một mảng, bao gồm tất cả các tên tệp có bên trong thư mục.

Đối với i = 1 Tới UBound (filearray)

Các ô (cuối cùng, 1) .Value = folderpath1 & filearray (i)

lastrow = lastrow + 1 Tiếp theo Đoạn mã trên được sử dụng để gán tên tệp trong mảng cho sổ làm việc.

Vui lòng theo dõi bên dưới để biết mã

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

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]