Cách Liệt Kê Thư Mục Trong Excel Bằng VBA Chỉ Trong Vài Giây
Bạn có hàng loạt thư mục cần liệt kê nhưng không muốn mất thời gian làm thủ công? Đừng lo lắng! VBA trong Excel có thể giúp bạn xử lý tất cả các thư mục và thư mục con chỉ trong vài giây. Bài viết này sẽ hướng dẫn bạn cách sử dụng một đoạn code VBA đơn giản để tự động hóa quy trình này.
Tại Sao Nên Sử Dụng VBA?
VBA (Visual Basic for Applications) là một ngôn ngữ lập trình mạnh mẽ cho phép người dùng tự động hóa các tác vụ trong Excel. Việc sử dụng VBA không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu sai sót so với việc làm thủ công. Với đoạn code sau đây, bạn có thể dễ dàng liệt kê toàn bộ danh sách thư mục trong một thư mục gốc, bao gồm cả các thư mục con mà không cần tốn công sức.
Đoạn Code VBA Đơn Giản
Dưới đây là đoạn code VBA sẽ giúp bạn liệt kê các thư mục và thư mục con trong Excel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub FolderNames() 'Update 16.10.2024 Application.ScreenUpdating = False Dim xPath As String Dim xWs As Worksheet Dim fso As Object, j As Long, folder1 As Object With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Choose the folder" .Show End With On Error Resume Next xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\" Application.Workbooks.Add Set xWs = Application.ActiveSheet xWs.Cells(1, 1).Value = xPath xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified") Set fso = CreateObject("Scripting.FileSystemObject") Set folder1 = fso.getFolder(xPath) getSubFolder folder1 xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535 xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit Application.ScreenUpdating = True End Sub Sub getSubFolder(ByRef prntfld As Object) Dim SubFolder As Object Dim subfld As Object Dim xRow As Long For Each SubFolder In prntfld.SubFolders xRow = Range("A1").End(xlDown).Row + 1 Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder.DateLastModified) Next SubFolder For Each subfld In prntfld.SubFolders getSubFolder subfld Next subfld End Sub |
Hướng Dẫn Sử Dụng Đoạn Code
- Mở Excel: Khởi động Excel và mở một workbook mới hoặc workbook mà bạn muốn làm việc.
- Mở Trình Soạn Thảo VBA: Nhấn
Alt + F11
để mở trình soạn thảo VBA. - Tạo Module Mới: Nhấp chuột phải vào bất kỳ thư mục nào trong cửa sổ Project Explorer, chọn
Insert
, sau đó chọnModule
. - Dán Đoạn Code: Sao chép đoạn code trên và dán vào cửa sổ mã của module mới.
- Chạy Đoạn Code: Nhấn
F5
hoặc chọnRun
từ menu để thực thi đoạn code. Nếu bạn để trống biếnPathSpec
, một hộp thoại sẽ xuất hiện cho phép bạn chọn thư mục gốc mà bạn muốn liệt kê. - Kiểm Tra Kết Quả: Quay trở lại Excel và kiểm tra trang “Folders”. Tất cả các thư mục và thư mục con sẽ được liệt kê đầy đủ.
Kết Luận
Sử dụng VBA để liệt kê các thư mục trong Excel không chỉ giúp tiết kiệm thời gian mà còn tạo điều kiện cho bạn quản lý dữ liệu một cách hiệu quả hơn. Hãy thử nghiệm với đoạn code trên và trải nghiệm sự tiện lợi mà nó mang lại. Nếu bạn có bất kỳ câu hỏi nào hoặc muốn chia sẻ kinh nghiệm của mình, hãy để lại ý kiến dưới bài viết này!