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

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.

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é.

ham dir trong vba phan 2

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:

ham dir trong vba phan 2

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.

https://thuthuat.taimienphi.vn/ham-dir-trong-vba-phan-2-45664n.aspx
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é.

Tác giả: Trần Văn Việt     (4.3★- 4 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

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ách tính thang điểm chữ bằng hàm VLOOKUP
Hàm TRUNC trong Excel là gì? Cách sử dụng hàm
Từ khoá liên quan:

Hàm DIR trong VBA

, hàm DIR, VBA,

SOFT LIÊN QUAN
  • Hàm Vlookup kết hợp hàm Right

    Bài tập mẫu kết hợp hàm Vlookup và hàm Right

    Giới thiệu hàm Vlookup kết hợp với hàm Right trong trong excel bài tính tiền bán xăng và tiền công chuyên chở, ngoài ra bạn có thể kết hợp hàm Vlookup với một số hàm khác như MID, LEFT

Tin Mới

  • Cách định dạng đường viền cho bảng Excel chi tiết nhất

    Thao tác chèn bảng trên Excel vô cùng quen thuộc với bất kỳ ai khi làm việc với công cụ văn phòng. Chúng ta có thể tùy ý thiết kế giao diện, làm bảng nổi bật hơn trong nội dung bằng cách định dạng đường viền cho bảng Excel. Vậy bạn đã biết cách để định dạng đường viền cho bảng trên ứng dụng Excel chưa.

  • Cách chèn dấu ngoặc trong Excel nhanh nhất

    Nếu bạn đang sử dụng Excel muốn chèn dấu ngoặc để hoàn thiện các biểu thức toán học, đang gặp khó khăn khi không thấy dấu ngoặc. Hãy theo dõi bài viết dưới đây để có thể chèn dấu ngoặc trong Excel nhanh chóng, dễ dàng

  • Cách tạo lịch, Calendar trên Google Sheets nhanh chóng

    Cách tạo lịch trên Google Sheets giúp bạn đọc dễ dàng tạo ra một bảng tính bao gồm các ngày tháng năm để điền các thông tin quan trọng, tạo lời nhắc cho bản thân. Việc tạo lịch trên Google Sheets sẽ hỗ trợ bạn đọc rất nhiều trong công việc giúp bạn sắp xếp công việc, lịch hẹn dễ dàng hơn.

  • Code Mộng Kiếm Tiêu Dao VGP mới nhất 4/2024

    Danh sách Code Mộng Kiếm Tiêu Dao mới nhất của NPH VGP dành cho game nhập vai MMO Tiên Hiệp, bạn không cần nạp thẻ vẫn có đồ xin đánh boss, phúc lợi ngập tràn.