Nếu bạn nhìn vào các thuộc tính được lưu trữ với sổ làm việc, bạn sẽ nhận thấy rằng Excel duy trì khá nhiều thông tin liên quan đến tệp. Một trong các mục là ngày và giờ được ghi chú đơn giản là “Đã sửa đổi”. Nhiều người gọi đây là ngày “sửa đổi lần cuối”, nhưng nó thực sự phản ánh lần cuối cùng sổ làm việc được lưu.

Nếu bạn muốn sử dụng ngày này trong sổ làm việc của mình (có thể ở đầu trang hoặc chân trang), bạn có thể làm như vậy bằng cách sử dụng thuộc tính BuiltinDocumentProperties (điều đó gần như là thừa). Macro sau sẽ thêm ngày tháng thích hợp vào tiêu đề tài liệu của bạn:

Sub MyHeader1()

Dim sLMD As String

On Error Resume Next

sLMD = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

If Err = 440 Then         Err = 0         sLMD = "Not Set"

End If     sLMD = Left(sLMD, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Saved: " & sLMD End Sub

Có một số mục cần lưu ý trong macro này. Trước hết, nó cố gắng xác định ngày cuối cùng sổ làm việc được lưu. Nếu thông tin đó không thể được xác định, thì nó sẽ đặt tiêu đề thành “Not Set”.

Lưu ý rằng có một số xử lý lỗi được thực hiện trong macro này. Lý do là Excel sẽ trả về lỗi nếu thuộc tính tài liệu cụ thể (BuiltinDocumentProperties trong trường hợp này) không được đặt. Lỗi cần được ngăn chặn và xử lý, được thực hiện ở đây.

Có một mục khác cần lưu ý ở đây. Trong một số phiên bản Excel, giá trị Err được trả về nếu thuộc tính không được đặt thực sự không phải là 440 (như được hiển thị ở đây), mà là một số lẻ khác, chẳng hạn như -2147467259. Điều này thực sự rất kỳ lạ. Tại sao giá trị 440 (là mã lỗi thích hợp)

Tôi không biết sẽ được trả lại trong một hoàn cảnh này chứ không phải trong một hoàn cảnh khác.

(Có lẽ một số chuyên gia Excel khác sẽ biết câu trả lời.) Nếu bạn gặp vấn đề này, có hai cách tiếp cận bạn có thể thực hiện. Đầu tiên, bạn có thể thay thế giá trị 440 bằng giá trị khác (-2147467259). Tùy chọn thứ hai, giả sử bạn đã lưu sổ làm việc ít nhất một lần, là sử dụng một macro khác. Phần sau đọc thuộc tính “sửa đổi lần cuối” từ chính tệp và lưu trữ thông tin đó trong tiêu đề:

Sub MyHeader2()

Dim fs As Variant     Dim f As Variant     Dim sLMD As String

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFile(ActiveWorkbook.Path & "\" & _       ActiveWorkbook.Name)

sLMD = Left(f.DateLastModified, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Modified: " & sLMD End Sub

Bất kể bạn sử dụng macro nào, hãy nhớ rằng macro, sau khi chạy, sẽ đặt tiêu đề bên trái thành thông tin mong muốn. Thông tin đó sẽ không thay đổi lại cho đến khi bạn chạy lại macro. Do đó, nếu bạn luôn muốn cập nhật ngày trong tiêu đề, thì bạn nên chạy macro theo định kỳ (có thể ngay trước khi in) hoặc thiết lập để chạy bất cứ khi nào bạn mở tài liệu của mình.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2285) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: