30.6 C
Ho Chi Minh City
Friday, June 5, 2026
AIPHOGPT.COM
Trang chủCông thức ExcelHàm VBA DIR – Cách Sử Dụng trong Microsoft Excel

Hàm VBA DIR – Cách Sử Dụng trong Microsoft Excel

Join LeQuocThai.Com on Telegram Channel

Đánh giá lequocthai.com:

0 / 5 Voted: 0 Votes: 0

Your page rank:

Để lấy các tên tệp hoặc thư mục khác trong cùng đường dẫn mà vẫn đáp ứng các thuộc tính đã chỉ định, bạn cần gọi lại hàm DIR mà không truyền bất kỳ đối số nào. Tính năng này của hàm DIR rất hữu ích khi cần duyệt hoặc liệt kê các tệp và thư mục có trong một vị trí.

Lưu ý rằng hàm DIR chỉ cung cấp tên của tệp. Nếu bạn cần các thuộc tính của tệp (như ngày sửa đổi cuối cùng, kích thước, v.v.) thì nên dùng FileObjectSystem.

Cú pháp của hàm VBA DIR:

DIR(pathname, attributes)

Trong đó, `pathname` chỉ định đường dẫn của tệp, thư mục hoặc thư mục con. Nếu không tìm thấy `pathname`, DIR sẽ trả về một chuỗi rỗng (độ dài = 0).

`attributes` là đối số tùy chọn. Nó có thể là một trong các giá trị sau hoặc tổng hợp của chúng:

Tên Thuộc Tính Mô Tả
vbNormal (Normal – Mặc định) Chỉ các tệp không có thuộc tính nào.
vbReadOnly (Read‑Only) Các tệp chỉ đọc.
vbHidden (Hidden) Các tệp ẩn.
vbSystem (System) Các tệp hệ thống.
vbVolume (Volume) Nhãn ổ đĩa; nếu kết hợp với bất kỳ thuộc tính nào khác, nhãn ổ đĩa sẽ bị bỏ qua.
vbDirectory (Directory) Thư mục.
vbArchive (Archive) Các tệp lưu trữ (backup).
vbAlias (Alias) Các tệp có bí danh (alias).

Một số điểm quan trọng về hàm VBA DIR

  • Cả hai đối số trong hàm DIR đều là tùy chọn.
  • Bạn có thể sử dụng ký tự đại diện (wildcard) (như `?` hoặc `*`) với DIR để chỉ định nhiều tệp.
  • `*` cho phép khớp bất kỳ chuỗi nào, bất kỳ độ dài nào (kể cả độ dài 0).
  • `?` cho phép khớp một ký tự duy nhất.
  • Lần đầu tiên, bạn phải gọi DIR kèm tham số `pathname`. Các lần gọi sau, chỉ cần gọi DIR mà không truyền đối số để lấy mục tiếp theo.
Khám phá:  Hàm ISERROR trong Excel – Cách Sử Dụng

5 Ví Dụ Cơ Bản Về Hàm DIR trong VBA

Ví dụ 1: Cung cấp đường dẫn tệp cho hàm DIR

Dir("C:\SomeFile.txt")

trả về `SomeFile.txt`

Dir("C:\Some*.txt")

trả về `SomeFile.txt` (giả sử không có tệp nào khác bắt đầu bằng “Some”)

Dir("C:\SomeFil?.txt")

trả về `SomeFile.txt`

Ví dụ 2: Lấy tệp .exe đầu tiên trong thư mục Windows

Sub RetrieveFile()
File = Dir("C:\Windows\*.exe")
MsgBox File
End Sub

Giải thích: Đoạn mã này lấy tệp .exe đầu tiên trong thư mục Windows và hiển thị tên tệp trong hộp thoại. Nếu có nhiều tệp .exe, chỉ tệp đầu tiên sẽ được trả về.

Ví dụ 3: Kiểm tra một tệp có tồn tại hay không

Sub RetrieveFile()
File = Dir("C:\Windows\CSUP.txt")
If Len(File) > 0 Then
MsgBox File & " Exists"
Else
MsgBox "File Doesn't Exist"
End If
End Sub

Giải thích: Nếu hàm DIR trả về chuỗi có độ dài lớn hơn 0, nghĩa là tệp tồn tại.

Ví dụ 4: Kiểm tra một thư mục có tồn tại hay không; nếu không, tạo thư mục đó

Sub RetrieveFolder()
MyFolder = "C:\TestDirectory"
Fldr = Dir(MyFolder, vbDirectory)
If Len(Fldr) > 0 Then
MsgBox Fldr & " Already Exists"
Else
MkDir MyFolder
MsgBox "Folder Created"
End If
End Sub

Giải thích: Nếu DIR trả về chuỗi có độ dài > 0, thư mục đã tồn tại; nếu không, hàm `MkDir` sẽ tạo thư mục mới.

Ví dụ 5: Thư mục “C:\Test\” chứa toàn các tệp ẩn. Lấy tên tệp ẩn đầu tiên.

Sub RetrieveFile()
MyFile = Dir("C:\Test\*.*", vbHidden)
MsgBox MyFile
End Sub

Giải thích: Hàm DIR sẽ tìm các tệp có thuộc tính ẩn trong thư mục “C:\Test\” và trả về tệp ẩn đầu tiên.

Khám phá:  Hàm FILTER trong Excel – Cách Sử Dụng

3 Ví Dụ Nâng Cao Về Hàm DIR trong Excel

Ví dụ 6: Duyệt qua tất cả các thư mục con cấp con trực tiếp trong một đường dẫn

Sub Iterate_Folders()
Dim ctr As Integer
ctr = 1
Path = "C:\Windows\"   ' Đường dẫn luôn phải kết thúc bằng "\"
FirstDir = Dir(Path, vbDirectory)   ' Lấy mục đầu tiên
Do Until FirstDir = ""
If (GetAttr(Path & FirstDir) And vbDirectory) = vbDirectory Then
ActiveSheet.Cells(ctr, 1).Value = Path & FirstDir
ctr = ctr + 1
End If
FirstDir = Dir()   ' Lấy mục tiếp theo
Loop
End Sub

Giải thích: Sử dụng vòng lặp `Do Until` kết hợp với hàm DIR để liệt kê các thư mục con trong một đường dẫn và ghi kết quả vào cột A của sheet hiện hành.

Ví dụ 7: Duyệt qua tất cả các tệp trong một đường dẫn (không bao gồm các tệp trong thư mục con)

Sub Iterate_Files()
Dim ctr As Integer
ctr = 1
Path = "C:\Windows\"   ' Đường dẫn luôn phải kết thúc bằng "\"
File = Dir(Path)   ' Lấy tệp đầu tiên
Do Until File = ""
ActiveSheet.Cells(ctr, 1).Value = Path & File
ctr = ctr + 1
File = Dir()   ' Lấy tệp tiếp theo
Loop
End Sub

Giải thích: Tương tự ví dụ trước, nhưng chỉ duyệt các tệp, không xét thư mục con.

Ví dụ 8: Liệt kê tất cả các tệp trong một đường dẫn và các thư mục con của nó

Sub Retrieve_File_listing()
Worksheets(1).Cells(2, 1).Activate
Call Enlist_Directories("C:\Users\Ankit\Desktop\ExcelTrick\", 1)
End Sub
Public Sub Enlist_Directories(strPath As String, lngSheet As Long)
Dim strFldrList() As String
Dim lngArrayMax As Long, x As Long
lngArrayMax = 0
strFn = Dir(strPath & "*.*", 23)
While strFn <> ""
If strFn <> "." And strFn <> ".." Then
If (GetAttr(strPath & strFn) And vbDirectory) = vbDirectory Then
lngArrayMax = lngArrayMax + 1
ReDim Preserve strFldrList(lngArrayMax)
strFldrList(lngArrayMax) = strPath & strFn & "\"
Else
ActiveCell.Value = strPath & strFn
Worksheets(lngSheet).Cells(ActiveCell.Row + 1, 1).Activate
End If
End If
strFn = Dir()
Wend
If lngArrayMax <> 0 Then
For x = 1 To lngArrayMax
Call Enlist_Directories(strFldrList(x), lngSheet)
Next
End If
End Sub

Giải thích: Đầu tiên hàm duyệt qua tất cả các thư mục trong một đường dẫn và lưu chúng vào mảng. Sau đó, hàm gọi đệ quy `Enlist_Directories` để lấy tên các tệp trong từng thư mục con, cuối cùng ghi toàn bộ danh sách vào sheet.

Khám phá:  Hướng dẫn sử dụng hàm REDUCE trong Microsoft Excel

Kết luận: Đó là toàn bộ nội dung về hàm VBA DIR trong Microsoft Excel.

Join LeQuocThai.Com on Telegram Channel

Lê Quốc Thái
Lê Quốc Tháihttps://lequocthai.com/
Yep! I am Le Quoc Thai codename name tnfsmith, one among of netizens beloved internet precious, favorite accumulate sharing all my knowledge and experience Excel, PC tips tricks, gadget news during over decades working in banking data analysis.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây
Captcha verification failed!
CAPTCHA user score failed. Please contact us!

Join LeQuocThai.Com on Telegram Channel

Đọc nhiều nhất

BÀI VIẾT MỚI NHẤT

CÙNG CHỦ ĐỀ