Lưu ý
Hàm, phương pháp, đối tượng hoặc thuộc tính được mô tả trong chủ đề này bị tắt nếu Dịch vụ Biểu thức Microsoft Jet đang chạy ở chế độ hộp cát, điều này ngăn chặn việc đánh giá các biểu thức không an toàn tiềm ẩn. Để biết thêm thông tin về chế độ hộp cát, hãy tìm kiếm "chế độ hộp cát" trong Trợ giúp.
Trả về một String đại diện cho tên của một tệp, thư mục hoặc thư mục khớp với một mẫu hình hoặc thuộc tính tệp đã xác định hoặc nhãn ổ đĩa của ổ đĩa.
Cú pháp
Dir[(pathname [, attributes] )]
Cú pháp hàm Dir có các đối số sau:
| Đối số | Mô tả |
|---|---|
| tên đường dẫn | Không bắt buộc. Biểu thức chuỗi chỉ định tên tệp — có thể bao gồm thư mục, thư mục và ổ đĩa. Chuỗi độ dài bằng 0 ("") được trả về nếu không tìm thấy tên đường dẫn . |
| thuộc tính | Không bắt buộc. Biểu thức số hoặc hằng số, mà tổng của nó xác định các thuộc tính tệp. Nếu bỏ qua, trả về các tệp khớp với tên đường dẫn nhưng không có thuộc tính. |
Cài đặt
Các thiết đặt đối số thuộc tínhgồm:
| Hằng số | Value | Mô tả |
|---|---|---|
| vbNormal | 0 | (Mặc định) Xác định các tệp không có thuộc tính. |
| vbReadOnly | 1 | Chỉ định các tệp chỉ đọc ngoài các tệp không có thuộc tính. |
| vbHidden | 2 | Chỉ định các tệp ẩn ngoài các tệp không có thuộc tính. |
| Hệ thống Vb | 4 | Chỉ định các tệp hệ thống ngoài các tệp không có thuộc tính. Không khả dụng trên máy Macintosh. |
| vbVolume | 8 | Chỉ định nhãn khối lượng; Nếu bất kỳ quy kết nào khác được chỉ định, vbVolume sẽ bị bỏ qua. Không khả dụng trên máy Macintosh. |
| vbDirectory | 16 | Chỉ định các thư mục hoặc thư mục, ngoài các tệp không có thuộc tính. |
| vbAlias | 64 | Tên tệp được chỉ định là một biệt danh. Chỉ sẵn dùng trên Macintosh. |
Lưu ý
Các hằng số này được Visual Basic for Applications (VBA) xác định và có thể được sử dụng ở bất kỳ đâu trong mã của bạn thay cho các giá trị thực tế.
Chú thích
Trong Microsoft Windows, Dir hỗ trợ sử dụng các ký tự đại diện nhiều ký tự ()* và ký tự đơn (?) để xác định nhiều tệp. Trên máy Macintosh, các ký tự này được coi là ký tự tên tệp hợp lệ và không thể được dùng làm ký tự đại diện để xác định nhiều tệp.
Vì Macintosh không hỗ trợ ký tự đại diện nên hãy sử dụng loại tệp để xác định các nhóm tệp. Bạn có thể sử dụng hàm MacID để chỉ định loại tệp thay vì sử dụng tên tệp. Ví dụ: câu lệnh sau đây sẽ trả về tên của tệp TEXT đầu tiên trong thư mục hiện tại:
Dir("SomePath", MacID("TEXT"))
Để lặp lại tất cả các tệp trong một thư mục, hãy chỉ định chuỗi trống:
Dir("")
Nếu bạn sử dụng hàm MacID với Dir trong Windows thì sẽ xảy ra lỗi.
Bất kỳ giá trị thuộc tính nào lớn hơn 256 sẽ được coi là giá trị MacID .
Bạn phải chỉ định tên đường dẫn khi gọi hàm Dir lần đầu, nếu không sẽ xảy ra lỗi. Nếu bạn cũng chỉ định các thuộc tính tệp, tên đường dẫn phải được bao gồm.
Dir trả về tên tệp đầu tiên khớp với tên đường dẫn. Để lấy thêm bất kỳ tên tệp nào khớp với tên đường dẫn, hãy gọi lại Dir mà không có đối số. Khi không có tên tệp nào trùng khớp, Dir trả về chuỗi độ dài bằng không (""). Sau khi trả về chuỗi độ dài bằng 0, bạn phải chỉ định tên đường dẫn trong các cuộc gọi tiếp theo nếu không lỗi sẽ xảy ra. Bạn có thể thay đổi thành một tên đường dẫn mới mà không cần truy xuất tất cả các tên tệp khớp với tên đường dẫn hiện tại. Tuy nhiên, bạn không thể gọi hàm Dir theo cách đệ quy. Gọi Dir với thuộc tính vbDirectory không liên tục trả về các thư mục con.
Mẹo Do tên tệp được truy xuất không theo thứ tự cụ thể, bạn có thể muốn lưu trữ tên tệp trả về trong một mảng, rồi sắp xếp mảng.
Ví dụ
Lưu ý
Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA). Để biết thêm thông tin về cách làm việc với VBA, chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống cạnh Tìm kiếm, rồi nhập một hoặc nhiều từ vào hộp tìm kiếm.
Ví dụ này sử dụng hàm Dir để kiểm tra xem một số tệp và thư mục nhất định có tồn tại hay không. Trên máy Macintosh, "HD:" là tên ổ đĩa mặc định và các phần của tên đường dẫn được phân tách bằng dấu hai chấm thay vì dấu gạch chéo ngược. Ngoài ra, ký tự đại diện của Windows được coi là ký tự tên tệp hợp lệ trên máy Macintosh. Tuy nhiên, bạn có thể sử dụng hàm MacID để chỉ định các nhóm tệp.
Dim MyFile, MyPath, MyName
' Returns "WIN.INI" (on Microsoft Windows) if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")
' Returns filename with specified extension. If more than one *.ini
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")
' Call Dir again without arguments to return the next *.INI file in the
' same directory.
MyFile = Dir
' Return first *.TXT file with a set hidden attribute.
MyFile = Dir("*.TXT", vbHidden)
' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Ignore the current directory and the encompassing directory.
If MyName <> "." And MyName <> ".." Then
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
End If ' it represents a directory.
End If
MyName = Dir ' Get next entry.
Loop