اگر به ویژگی های ذخیره شده با یک کتاب کار نگاه کنید، متوجه خواهید شد که اکسل اطلاعات کمی در مورد فایل را حفظ می کند. یکی از موارد تاریخ و ساعتی است که به سادگی با عنوان "تغییر شده" ذکر می شود. بسیاری از مردم به این تاریخ به عنوان «آخرین تغییر» اشاره میکنند، اما در واقع آخرین باری که کتاب کار ذخیره شده است را نشان میدهد.
اگر میخواهید از این تاریخ در کتاب کار خود استفاده کنید (شاید در سرصفحه یا پاورقی)، میتوانید این کار را با استفاده از ویژگی BuiltinDocumentProperties (که تقریباً زائد به نظر میرسد) انجام دهید. ماکرو زیر تاریخ مناسب را به سربرگ سند شما اضافه می کند:
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
در این ماکرو مواردی وجود دارد که باید به آنها توجه کنید. اول از همه، سعی می کند آخرین تاریخ ذخیره کتاب کار را تعیین کند. اگر آن اطلاعات را نتوان تعیین کرد، هدر را روی "تنظیم نشده" تنظیم می کند.
توجه داشته باشید که برخی از خطاها در این ماکرو انجام شده است. دلیل آن این است که اگر یک ویژگی سند خاص (در این مورد BuiltinDocumentProperties) تنظیم نشود، اکسل یک خطا برمی گرداند. خطا باید رهگیری و رسیدگی شود که در اینجا انجام می شود.
نکته دیگری نیز در اینجا قابل ذکر است. در برخی از نسخههای اکسل، مقدار Err که در صورت تنظیم نشدن ویژگی برگردانده میشود، واقعاً 440 نیست (همانطور که در اینجا نشان داده شده است)، بلکه برخی از اعداد فرد دیگری مانند -2147467259 است. این واقعاً بسیار عجیب است. من نمی دانم که چرا مقدار 440 (که کد خطای مناسب است) در یک شرایط برگردانده می شود و در شرایط دیگر نه. (شاید یکی دیگر از اساتید اکسل جواب را بداند.) اگر این مشکل را دارید، دو روش وجود دارد که می توانید در پیش بگیرید. ابتدا می توانید مقدار 440 را با مقدار دیگر (2147467259-) جایگزین کنید. گزینه دوم، با فرض اینکه قبلاً کتاب کار را حداقل یک بار ذخیره کرده اید، استفاده از یک ماکرو متفاوت است. موارد زیر ویژگی «آخرین تغییر» را از خود فایل میخواند و آن اطلاعات را در هدر ذخیره میکند:
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
صرف نظر از اینکه از کدام ماکرو استفاده می کنید، به یاد داشته باشید که ماکرو پس از اجرا، هدر سمت چپ را روی اطلاعات مورد نظر تنظیم می کند. تا زمانی که ماکرو را دوباره اجرا نکنید، این اطلاعات دوباره تغییر نخواهد کرد. بنابراین، اگر همیشه یک تاریخ بهروز در هدر میخواهید، باید ماکرو را به صورت دورهای اجرا کنید (شاید درست قبل از چاپ) یا آن را طوری تنظیم کنید که هر زمان که سند خود را باز میکنید اجرا شود.