Liệt kê chi tiết của tất cả các tệp trong một thư mục sử dụng VBA trong Microsoft Excel
Trong bài viết này, chúng tôi sẽ tạo một macro để thu thập chi tiết của tất cả các tệp trong một thư mục.
Trước khi chạy macro, chúng ta cần chỉ định đường dẫn của thư mục trong hộp văn bản.
Khi chạy macro, nó sẽ trả về Tên tệp, Đường dẫn tệp, Kích thước tệp, Ngày tạo và Ngày sửa đổi lần cuối của tất cả các tệp trong thư mục.
Giải thích logic
Trong bài viết này, chúng tôi đã tạo hai macro “ListFilesInFolder” và “TestListFilesInFolder”.
Macro “ListFilesInFolder” sẽ hiển thị chi tiết liên quan đến tất cả các tệp trong thư mục.
Macro “TestListFilesInFolder” được sử dụng để chỉ định tiêu đề và gọi macro “ListFilesInFolder”.
Giải thích mã
Đặt FSO = CreateObject (“Scripting.FileSystemObject”)
Đoạn mã trên được sử dụng để tạo một đối tượng mới của đối tượng hệ thống tệp.
Đặt SourceFolder = FSO.GetFolder (SourceFolderName)
Đoạn mã trên được sử dụng để tạo một đối tượng của thư mục được chỉ định bởi đường dẫn.
Cells (r, 1) .Formula = FileItem.Name Cells (r, 2) .Formula = FileItem.Path Cells (r, 3) .Formula = FileItem.Size Cells (r, 4) .Formula = FileItem.DateCrated Cells ( r, 5) .Formula = FileItem.DateLastModified Đoạn mã trên được sử dụng để trích xuất chi tiết của các tệp.
Đối với mỗi thư mục con trong SourceFolder.SubFolders ‘Gọi thủ tục tương tự cho thư mục con ListFilesInFolder SubFolder.Path, True Next SubFolder Đoạn mã trên được sử dụng để trích xuất chi tiết của tất cả các tệp trong thư mục con.
Columns (“A: E”). Chọn Selection.ClearContents Đoạn mã trên được sử dụng để xóa nội dung từ cột A đến E.
Vui lòng theo dõi bên dưới để biết mã
Option Explicit Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) 'Declaring variables Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long 'Creating object of FileSystemObject Set FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.GetFolder(SourceFolderName) r = Range("A65536").End(xlUp).Row + 1 For Each FileItem In SourceFolder.Files 'Display file properties Cells(r, 1).Formula = FileItem.Name Cells(r, 2).Formula = FileItem.Path Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 Next FileItem 'Getting files in sub folders If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders 'Calling same procedure for sub folders ListFilesInFolder SubFolder.Path, True Next SubFolder End If Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing ActiveWorkbook.Saved = True End Sub Sub TestListFilesInFolder() 'Declaring variable Dim FolderPath As String 'Disabling screen updates Application.ScreenUpdating = False 'Getting the folder path from text box FolderPath = Sheet1.TextBox1.Value ActiveSheet.Activate 'Clearing the content from columns A:E Columns("A:E").Select Selection.ClearContents 'Adding headers Range("A14").Formula = "File Name:" Range("B14").Formula = "Path:" Range("C14").Formula = "File Size:" Range("D14").Formula = "Date Created:" Range("E14").Formula = "Date Last Modified:" 'Formating of the headers Range("A14:E14").Font.Bold = True 'Calling ListFilesInFolder macro ListFilesInFolder FolderPath, True 'Auto adjusting the size of the columns Columns("A:E").Select Selection.Columns.AutoFit Range("A1").Select 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]