Hàm VBA DIR | Làm thế nào để sử dụng Hàm VBA DIR trong Excel?
Hàm VBA DIR trong Excel
Hàm VBA DIR còn được gọi là hàm thư mục, đây là một hàm có sẵn trong VBA dùng để cung cấp cho chúng ta tên tập tin của một tập tin hoặc một thư mục nhất định nhưng chúng ta cần cung cấp đường dẫn cho tập tin, kết quả trả về bởi cái này. hàm là chuỗi vì nó trả về tên của tệp, có hai đối số cho hàm này là tên đường dẫn và các thuộc tính.
Hàm DIR trả về tên tệp đầu tiên trong đường dẫn thư mục được chỉ định. Ví dụ: trong D Drive của bạn nếu bạn có tên thư mục là 2019 và trong thư mục đó, nếu tệp excel của bạn có tên là “Bán hàng 2019” thì bạn có thể truy cập tệp này bằng cách sử dụng hàm DIR.
Hàm “VBA DIR” rất hữu ích trong việc lấy tên của tệp bằng cách sử dụng thư mục đường dẫn của nó.
Cú pháp
Hàm này có hai đối số tùy chọn.
- [Tên đường dẫn]: Như tên cho biết đường dẫn để truy cập tệp. Đây có thể là tên của tệp, tên của thư mục hoặc thư mục. Nếu bất kỳ đường dẫn nào không được chỉ định, tôi sẽ trả về giá trị chuỗi trống, tức là “”
- [Thuộc tính]: Đây cũng là một đối số tùy chọn và bạn có thể không sử dụng nó thường xuyên trong mã hóa. Bạn có thể chỉ định thuộc tính của tệp trong [Tên đường dẫn] và hàm DIR chỉ tìm kiếm các tệp đó.
Ví dụ: Nếu bạn chỉ muốn truy cập các tệp ẩn, nếu bạn muốn chỉ truy cập các tệp chỉ đọc, v.v.… chúng ta có thể chỉ định trong đối số này. Dưới đây là các thuộc tính chúng tôi có thể sử dụng.
Ví dụ để sử dụng hàm VBA DIR
Bạn có thể tải về Mẫu VBA Dir Excel này tại đây - Mẫu VBA Dir ExcelVí dụ # 1 - Truy cập Tên tệp bằng Hàm DIR
Tôi sẽ giải thích cho bạn ví dụ đơn giản về cách truy cập tên tệp bằng hàm DIR. Làm theo các bước dưới đây.
Bước 1: Tạo tên macro.
Bước 2: Định nghĩa biến là Chuỗi .
Mã:
Sub Dir_Example1 () Dim MyFile As String End Sub
Bước 3: Bây giờ đối với biến này, chúng ta sẽ gán giá trị bằng cách sử dụng hàm DIR .
Mã:
Sub Dir_Example1 () Dim MyFile As String MyFile = Dir (End Sub
Bước 4: Bây giờ sao chép và dán đường dẫn thư mục tệp trên máy tính của bạn. Đề cập đến tên đường dẫn trong dấu ngoặc kép.
Mã:
Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template End Sub
Bước 5: Tôi đã đề cập đến đường dẫn của tôi đến thư mục, bây giờ chúng ta cần đề cập đến tên tệp và phần mở rộng của nó. Để làm điều này, điều đầu tiên chúng ta cần làm là chúng ta cần đặt một dấu gạch chéo ngược sau đường dẫn (\)
Sau khi nhập dấu gạch chéo ngược, chúng ta cần nhập tên tệp đầy đủ .
Mã:
Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template \ VBA Dir Excel Template.xlsm") End Sub
Bước 6: Hiển thị giá trị của biến trong hộp thông báo.
Mã:
Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template \ VBA Dir Excel Template.xlsm") MsgBox MyFile End Sub
Bây giờ hãy chạy mã và xem kết quả của hộp thông báo là gì.
Vì vậy, hàm DIR trả về tên tệp có phần mở rộng tệp.
Ví dụ # 2 - Mở tệp bằng cách sử dụng hàm DIR
Bây giờ chúng ta làm thế nào để mở tệp? Hàm này có thể trả về tên tệp nhưng việc mở tệp đó là một quá trình khác một chút. Làm theo các bước dưới đây để mở tệp.
Bước 1: Tạo hai biến là Chuỗi .
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String End Sub
Bước 2: Bây giờ cho biến FolderName chỉ định đường dẫn thư mục.
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" End Sub
Bước 3: Bây giờ đối với biến FileName, chúng ta cần lấy tên tệp bằng cách sử dụng hàm DIR .
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (End Sub
Bước 4: Bây giờ đối với Tên đường dẫn, chúng ta đã gán một đường dẫn cho biến FolderPath, vì vậy chúng ta có thể cung cấp trực tiếp biến tại đây.
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName End Sub
Bước 5: Bây giờ chúng ta cần cung cấp tên tệp. Bằng cách sử dụng ký hiệu và (&) gán tên tệp.
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") End Sub
Bước 6: Bây giờ sử dụng phương thức WORKBOOKS.OPEN .
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") Workbooks.Open End Sub
Bước 7: Tên tệp là sự kết hợp của FolderPath & FileName . Vì vậy, hãy kết hợp hai điều này.
Mã:
Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") Workbooks.Mở FolderName & FileName End Sub
Bây giờ chạy mã này, nó sẽ mở tên tệp được đề cập.
Ví dụ # 3 - Mở Nhiều Sổ làm việc bằng Hàm DIR
Trên thực tế, chúng tôi có thể truy cập tất cả các sổ làm việc trong thư mục. Để truy cập từng tệp, chúng ta không thể đề cập trực tiếp đến tất cả các tên tệp, nhưng chúng ta có thể sử dụng ký tự đại diện để tham chiếu tệp.
Dấu hoa thị (*) là một trong những ký tự đại diện đó. Nó xác định bất kỳ số ký tự nào. Ví dụ: nếu bạn muốn truy cập tất cả các tệp macro trong thư mục, bạn có thể sử dụng dấu hoa thị làm ký tự đại diện, tức là “* .xlsm *”
Ở đây * sẽ khớp với bất kỳ tên tệp nào có phần mở rộng của tệp là “xlsm”.
Mã:
Sub Dir_Example3 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "* .xlsm *") Do While FileName "" Workbooks.Open FolderName & FileName FileName = Dir ( ) Vòng kết thúc phụ
Bây giờ đoạn mã trên sẽ mở tất cả các tệp trong đường dẫn thư mục.
FileName = Dir () lý do tại sao tôi sử dụng dòng này bởi vì, để truy cập tệp tiếp theo trong thư mục, chúng ta phải đặt tên tệp hiện có thành nil. Thời điểm chúng tôi đặt tên tệp hiện có thành nil khi vòng lặp chạy lần thứ hai, nó sẽ lấy tệp tiếp theo trong thư mục.
Ví dụ # 4 - Lấy tất cả Tên tệp trong Thư mục
Giả sử nếu bạn muốn danh sách tất cả các tên tệp trong thư mục, chúng ta cũng có thể thực hiện việc này bằng cách sử dụng các thuộc tính.
Mã:
Sub Dir_Example4 () Dim FileName As String FileName = Dir ("E: \ VBA Template \", vbDirectory) Do While FileName "" Debug.Print FileName FileName = Dir () Loop End Sub
Hiển thị cửa sổ ngay lập tức bằng cách nhấn Ctrl + G.
Bây giờ chạy mã, chúng tôi sẽ nhận được tất cả các tên tệp trong cửa sổ ngay lập tức.