Ngày lưu cuối cùng trong chân trang (Microsoft Excel)
Lori muốn phía bên phải của chân trang cho trang tính của cô ấy bao gồm ngày sổ làm việc được lưu lần cuối. Mỗi khi cô ấy cố gắng tạo một công thức để thực hiện việc này, Excel sẽ hiển thị thông báo lỗi cho biết “chuỗi quá dài” và cô ấy cần xóa một số ký tự. Cô ấy không chắc mình hiểu tại sao điều này lại xảy ra hoặc làm thế nào cô ấy có thể nhận được ngày mà cô ấy muốn ở cuối trang.
Không có công thức thực tế nào có thể đặt ngày lưu cuối cùng vào chân trang.
Excel không có cách nào (không giống như Word) để đưa những thông tin nhỏ này vào đó.
Có một cách bạn có thể thực hiện, nhưng giải pháp yêu cầu sử dụng macro. Lý do là vì bạn đang truy cập thông tin hệ thống — thông tin bên ngoài chính Excel — và thông tin đó chỉ có thể được truy xuất bằng ngôn ngữ lập trình như VBA.
Một cách tiếp cận là thêm một số mã chạy bất cứ khi nào sổ làm việc được lưu.
Mã sẽ cập nhật chân trang mong muốn với ngày hiện tại:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) ActiveWorksheet.PageSetup.RightFooter = _ "Last Saved: " & Format(Date, "mmmm d, yyyy") End Sub
Macro này, sẽ được lưu trữ trong đối tượng ThisWorkbook cho sổ làm việc mà bạn muốn ảnh hưởng, cập nhật chân trang cho trang tính hiện đang hoạt động. Nếu bạn muốn ảnh hưởng đến tất cả các trang tính trong sổ làm việc, thì một thay đổi nhỏ đối với macro theo thứ tự:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) Dim sht As Worksheet For Each sht In Sheets sht.PageSetup.RightFooter = _ "Last Saved: " & Format(Date, "mmmm d, yyyy") Next End Sub
Nếu hôm nay là ngày 12 tháng 12 năm 2011, thì sau khi chạy macro (được thực hiện tự động khi lưu), tất cả chân trang bên phải sẽ được đặt thành “Lưu lần cuối: ngày 12 tháng 12 năm 2011”.
Bạn cũng có thể dựa vào ngày lưu tệp được lưu trữ trong các thuộc tính tích hợp của Excel. Cách bạn đưa ngày đó vào footer như sau:
Sub RightFooterLastSaved() ActiveSheet.PageSetup.RightFooter = _ ActiveWorkbook.BuiltinDocumentProperties(12) End Sub
Hạn chế của macro này là bạn cần phải nhớ chạy nó theo định kỳ, vì vậy nó không hoàn toàn tự động như các cách tiếp cận trước. Tuy nhiên, bạn có thể đặt dòng đơn ở trung tâm của macro vào trình xử lý sự kiện Workbook_BeforePrint.
Có một cách tiếp cận khác mà bạn có thể sử dụng. Điều này liên quan đến việc yêu cầu từ Windows ngày và giờ thực tế một tệp được lưu.
Private Sub Workbook_Open() Dim sTemp As String Dim sht As Worksheet sTemp = FileDateTime(ActiveWorkbook.FullName) sTemp = "Last Saved: " & sTemp For Each sht In Sheets sht.PageSetup.RightFooter = sTemp Next sht End Sub
Macro này được thiết kế để chạy bất cứ khi nào sổ làm việc được mở lần đầu — nó được lưu dưới dạng thủ tục Workbook_Open của đối tượng ThisWorkbook. Workhorse của macro là dòng gọi hàm FileDateTime.
Chức năng này có thể được sử dụng để xác định ngày và giờ bất kỳ tệp nào được lưu. Nó yêu cầu tên đường dẫn đầy đủ của tệp, được cung cấp bởi thuộc tính FullName của đối tượng ActiveWorkbook. Ngày và giờ này sau đó được đặt ở chân trang bên phải của tất cả các trang tính trong sổ làm việc.
Cũng nên nhớ rằng giới hạn những gì bạn có thể đặt vào mỗi phần của đầu trang hoặc chân trang là khoảng 250 ký tự. Vì vậy, nếu bạn điều chỉnh macro để thêm thông tin vào phần bên phải của chân trang, hãy đảm bảo rằng nó không thêm quá nhiều ký tự, nếu không bạn có thể gặp sự cố với macro.
_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 (2190) á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: