Cách tìm tệp gần đây nhất xuất hiện trong một địa chỉ đường dẫn

Chia sẻ bởi:api_publisher
★★★★★
Quảng cáo

Tóm tắt: Hướng dẫn thực hành Excel, trình bày theo từng bước, có công thức mẫu và lưu ý áp dụng nhanh trong công việc.

Bằng cách sử dụng 2 hàm chức năng VBA dưới đây (với hai phương pháp khác nhau), ta có thể tìm được tệp gần đây  nhất xuất hiện trong đường dẫn chứa tệp. Sẽ có 2 tiêu chí trong hàm cần phải thỏa mãn:

  • Directory: Địa chỉ đầy đủ của đường dẫn mà bạn cần quan tâm (ký tự dạng String). Ví dụ c:\files\excel\
  • FileSpec: Tên loại tệp (ký tự dạng String). Ví dụ, ký tự “*.xls” dành cho các tệp bảng tính Excel, hoặc ký tự “*.*” dành cho tất cả các loại tệp.

Nếu như không tồn tại đường dẫn nói trên hoặc không có loại tệp giống với tệp đã chọn thì hàm sẽ trả về kết quả là trống.

Phương pháp 1: Sử dụng hàm Dir

Để tìm được tên tệp, ta sử dụng câu lệnh dưới đây thông qua hàm Dir trong VBA. Phương pháp này đạt hiệu quả tối ưu cho tất cả các phiên bản Excel khác nhau.

Mã VBA mẫu
Function NewestFile(Directory, FileSpec) ' Returns the name of the most recent file in a Directory ' That matches the FileSpec (e.g., "*.xls"). ' Returns an empty string
if the directory does not exist or ' it contains no matching files
    Dim FileName As String
    Dim MostRecentFile As String
    Dim MostRecentDate As Date
    If Right(Directory, 1) <> "\" Then Directory = Directory & "\" FileName = Dir(Directory & FileSpec, 0)
        If FileName <> "" Then MostRecentFile = FileName MostRecentDate = FileDateTime(Directory & FileName)
            Do While FileName <> ""
                If FileDateTime(Directory & FileName) > MostRecentDate Then MostRecentFile = FileName MostRecentDate = FileDateTime(Directory & FileName) End
                    If FileName = Dir
                    Loop End
                    If NewestFile = MostRecentFile
                    End Function

Phương pháp 2: Sử dụng chức năng FileSearch

Câu lệnh dưới đây sẽ sử dụng chức năng FileSearch, và điểm yếu của chức năng này là nó không hỗ trợ tất cả các phiên bản Excel. Tuy vậy, không giống như phương pháp trên, FileSearch sẽ cho ra kết quả bao gồm cả tên của tệp cần tìm lẫn địa chỉ đường dẫn chính xác của nó.

Lưu ý rằng kể từ phiên bản Office 2007, chức năng FileSearch đã bị lược bỏ.

Mã VBA mẫu
Function NewestFile(Directory, FileSpec) ' Returns the full path and name of the most recent file in a Directory ' That matches the FileSpec (e.g., "*.xls"). ' Returns an empty string
if the directory does not exist or ' it contains no matching files
    Dim NumFound As Long NewestFile = ""
    With Application.FileSearch .NewSearch .LookIn = Directory .FileName = FileSpec NumFound = .Execute(SortBy:=msoSortByLastModified, _ SortOrder:=msoSortOrderDescending)
        If NumFound > 0 Then NewestFile = .FoundFiles(1) End
            With
        End Function

Ví dụ minh họa

Hàm NewestFile có thể được sử dụng như một câu lệnh trong VBA hoặc như công thức thông thường trong bảng tính Excel. Chẳng hạn, câu lệnh dưới đây sẽ cho ra kết quả là tên tệp Excel mới nhất xuất hiện trong đường dẫn “c:\myfiles\”

MsgBox NewestFile(“c:\myfiles”, “*.xls”)

Kết quả nhận được cũng sẽ giống như trên nếu như ta sử dụng công thức Excel dưới đây:

=NewestFile(“c:\myfiles”, “*.xls”)

Kỹ năng giải quyết vấn đề hiệu quả
Khóa học SprinGO phù hợp

Kỹ năng giải quyết vấn đề hiệu quả

Mô tả Nội dung Đánh giá Tài nguyên KỸ NĂNG GIẢI QUYẾT VẤN ĐỀ HIỆU QUẢHiểu đúng vấn đề là một nửa của giải...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm