Hàm DIR trong VBA (Phần 2)

Trong bài viết hàm DIR trong VBA (Phần 2) dưới đây Taimienphi.vn sẽ giới thiệu cho bạn một số ví dụ về hàm DIR trong VBA. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu về FileSystemObject (FSO) trong VBA là gì nhé.

1. Ví dụ về hàm DIR trong VBA

Dưới đây là một số ví dụ về hàm DIR trong VBA:

Ví dụ 1: Lấy tên file từ đường dẫn

Nếu có đường dẫn file, chúng ta có thể sử dụng hàm DIR để lấy tên của file từ đó.

Ví du, đoạn mã dưới đây trả về tên của file và hiển thị tên file trong hộp thông báo:

Sub laytenfile()

Dim tenfile As String

FileName = Dir("C:\Users\sumit\Desktop\Test\Excel File A.xlsx")

MsgBox ten file

End Sub

Đoạn mã trên sử dụng biến "tenfile" để lưu ten file mà hàm DIR trả về. Sau đó sử dụng hộp thông báo để hiển thị tên file như hình dưới đây:

Trong trường hợp nếu file không tồn tại, hàm DIR sẽ trả về chuỗi rỗng.

Ví dụ, trong đoạn mã dưới đây chúng ta sử dụng lệnh If Then Else để kiểm tra xem file có tồn tại hay không. Nếu file không tồn tại, nó sẽ hiển thị hộp thông báo kèm theo nội dung thông báo file không tồn tại.

Sub kiemtrafiletontai ()

Dim tenfile As String

FileName = Dir("C:\Users\sumit\Desktop\Test\Excel File A.xlsx")

If FileName <> "" Then

MsgBox tenfile

Else

MsgBox "file khong ton tai"

End If

End Sub

Ví dụ 2: Kiểm tra thư mục có tồn tại hay không và tạo thư mục

Đoạn mã dưới đây kiểm tra xem thư mục Test có tồn tại hay không.

Hộp thông báo được sử dụng để hiển thị thông báo thư mục có tồn tại hay không tồn tại:

Sub CheckDirectory()

Dim duongdan As String

Dim CheckDir As String

PathName = "C:\Users\sumit\Desktop\Test"

CheckDir = Dir(tenduongdan, vbDirectory)

If CheckDir <> "" Then

MsgBox CheckDir & " ton tai"

Else

MsgBox "thu muc khong ton tai"

End If

End Sub

Nếu muốn chúng ta có thể tinh chỉnh đoạn mã trên để kiểm tra xem thư mục có tồn tại hay không, nếu thư mục không tồn tại, chúng ta có thể sử dugnj VBA để tạo thư mục đó.

Đoạn mã dưới đây sử dụng hàm MkDir để tạo thư mục trong trường hợp nếu thư mục không tồn tại:

Sub taothumuc()

Dim tenduongdan As String

Dim CheckDir As String

PathName = "C:\Users\sumit\Desktop\Test"

CheckDir = Dir(tenduongdan, vbDirectory)

If CheckDir <> "" Then

MsgBox CheckDir & " thu muc ton tai khong"

Else

MkDir PathName

MsgBox "tao thu muc moi cung ten" & CheckDir

End If

End Sub

Ví dụ 3: Lấy tên tất cả các file và thư mục trong một thư mục

Để lấy danh sách tên tất cả các file và thư mục trong một thư mục, chúng ta có thể sử dụng hàm DIR.

Đoạn mã dưới đây liệt kê danh sách tên tất cả các file và thư mục trong thư mục Test (nằm trong đường dẫn - C:\Users\sumit\Desktop\Test\).

Sử dụng Debug.Print để hiển thị tên file, thư mục trong cửa sổ Immediate. Ngoài ra chúng ta có thể sử dụng để liệt kê tên trong hộp thông báo hoặc cột Excel:

Sub laytatcatenfile&thumuc()

Dim tenfile As String

tenfile = Dir("C:\Users\sumit\Desktop\Test\", vbDirectory)

Do While tenfile <> ""

Debug.Print tenfile

Tenfile = Dir()

Loop

End Sub

Vòng lặp Do While được sử dụng trong đoạn mã trên để tiếp tục cho đến khi tất cả các file và thư mục trong đường dẫn đã cho được hiển thị. Nếu không còn file / thư mục nào nữa, tenfile sẽ là chuỗi rỗng và vòng lặp sẽ dừng lại.

Ví dụ 4: Lấy tên tất cả các file trong một thư mục

Sử dụng đoạn mã dưới đây để lấy tên tất cả các file trong một thư mục (ché không phải tên của các thư mục con):

Sub laytatcatenfile()

Dim tenfile As String

tenfile = Dir("C:\Users\sumit\Desktop\Test\")

Do While tenfile <> ""

Debug.Print FileName

tenfile = Dir()

Loop

End Sub

Đoạn mã này tương tự như đoạn mã được sử dụng trong ví dụ 3, nhưng có tinh chỉnh một chút.

Trong đoạn mã này chúng ta chưa chỉ định vbDirectory trong hàm DIR. Nếu chúng ta chỉ định vbDirectory, nó sẽ trả về tên của tất cả các file cũng như thư mục. Nếu không chỉ định vbDirectory, hàm DIR chỉ trả về tên của các file.

Lưu ý: Nếu muốn lấy tên của tất cả các file trong thư mục chính và các thư mục con, chúng ta không thể sử dụng hàm DIR (vì hàm không phải đệ quy). Để làm được điều này, chúng ta có thể sử dụng Power Query (không cần mã) hoặc sử dụng File System Object trong VBA (có đệ quy).

Ví dụ 5: Lấy tên tất cả các thư mục con trong một thư mục

Đoạn mã dưới đây sẽ lấy tên tất cả tên của các thư mục con trong thư mục được chỉ định.

Bằng cách sử dụng hàm GetAtr trong VBA, chúng ta có thể kiểm tra xem tên được trả về bởi hàm DIR là tên file hay tên thư mục:

Sub laytenthumuccon ()

Dim tenfile As String

Dim tenduongdan As String

PathName = "C:\Users\sumit\Desktop\Test\"

Tenfile = Dir(tenduongdan, vbDirectory)

Do While tenfile<> ""

If GetAttr(tenduongdan & tenfile) = vbDirectory Then

Debug.Print tenfile

End If

FileName = Dir()

Loop

End Sub

Chúng ta lại sử dụng Debug.Print để lấy tên trong cửa sổ Immediate. Ngoài ra chúng ta có thể lấy tên trong hộp thông báo hoặc trong Excel bằng cách sửa đổi mã cho phù hợp.

Ví dụ 6: Lấy tên file Excel đầu tiên trong thư mục

Với hàm DIR, chúng ta có thể chỉ định phần mở rộng file hoặc tiền tố / hậu tố bất kỳ mà chúng ta muốn trong tên file được trả về.

Đoạn mã dưới đây hiển thị tên của file Excel đầu tiên trong thư mục Test:

Sub laytenfiledautien()

Dim tenfile As String

Dim tenduongdan As String

Tenduongdan = "C:\Users\sumit\Desktop\Test\"

Tenfile= Dir(tenduongdan & "*.xls*")

MsgBox tenfile

End Sub

Lưu ý: Trong đoạn mã trên chúng ta sử dụng *.xls* (dấu hoa thị ở cả 2 bên). Điều này để đảm bảo tất cả các phiên bản file Excel đều được kiểm tra (.xls, xlsx, .xlsm, .xlsb).

Ví dụ 7: Lấy tên của tất cả các file Excel trong một thư mục

Sử dụng đoạn mã dưới đây để lấy tên của tất cả các file Excel trong thư mục Test:

Sub laytatcatenfile()

Dim tenthumuc As String

Dim tenfile As String

Tenthumuc = "C:\Users\sumit\Desktop\Test\"

Tenfile = Dir(FolderName & "*.xls*")

Do While tenfile <> ""

Debug.Print tenfile

Tenfile = Dir()

Loop

End Sub

Mặc dù hàm DIR chỉ trả về tên của file Excel đầu tiên, vì chúng ta gọi lại hàm trong vòng lặp, hàm sẽ đi qua tất cả các file và trả về tên tất cả các file Excel.

Như vậy bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn một số ví dụ về hàm DIR trong VBA, tiếp sau bài Hàm DIR trong VBA phần 1 đã được chúng tôi giới thiệu trước đó . Ngoài ra nếu có bất kỳ thắc mắc nào cần giải đáp, bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.

Trong bài viết Hàm DIR trong VBA (Phần 1) Taimienphi.vn đã giới thiệu cho bạn về cách sử dụng cũng như cú pháp hàm DIR trong VBA. Bài viết dưới đây Taimienphi.vn sẽ giới thiệu cho bạn một số ví dụ về hàm DIR trong VBA.
Hàm Vlookup với 2 điều kiện
Cách sử dụng hàm Vlookup ngược từ phải qua trái
Sử dụng hàm VLOOKUP để lấy dữ liệu từ bảng tính này sang bảng tính khác
Sử dụng hàm VLOOKUP để lấy dữ liệu từ Sheet này sang Sheet khác
Sử dụng hàm VLOOKUP nhiều điều kiện
Tìm hiểu 23 điều về hàm VLOOKUP ai cũng nên biết (Phần 1)

ĐỌC NHIỀU