هر بار که متیو یک ورک بوک را می بندد، دوست داشت اکسل یک نسخه پشتیبان با تاریخ از آن ورک بوک ایجاد کند، به این معنی که با استفاده از نام فایلی که شامل تاریخ است ذخیره می شود. بنابراین، اگر «AnyWorkbookName» را ذخیره کند، نه تنها با آن نام، بلکه تحت نام «AnyWorkbookName [تاریخ و ساعت امروز] نیز ذخیره می شود. متیو مطمئن است که این کار باید با VBA انجام شود، اما مطمئن نیست که چگونه این کار را انجام دهد.
هر تعداد ماکرو وجود دارد که می توان برای انجام این کار توسعه داد. بیشتر همه آنها تغییراتی در یک موضوع هستند (به اصطلاح) بنابراین برای اهداف ما یک مثال کافی است.
ماکرو زیر، درست قبل از بستن ورک بوک، ورک بوک را با تاریخ و زمان اضافه شده به انتهای نام فایل ذخیره می کند.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sFileName As String
Dim sDateTime As String
With ThisWorkbook
sDateTime = " (" & Format(Now, "yyyy-mm-dd hhmm") & ").xlsm"
sFileName = Application.WorksheetFunction.Substitute _
(.FullName, ".xlsm", sDateTime)
.SaveCopyAs sFilename
End With
End Sub
ماکرو رشته تاریخ و زمان را در متغیر sDateTime قرار می دهد. سپس با استفاده از تابع کاربرگ SUBSTITUTE در نام فایل کتابهای کار درج می شود. (رشته تاریخ/زمان به طور موثر درست قبل از پسوند نام فایل درج می شود.) ماکرو فرض می کند که ورک بوک به عنوان یک فایل XLSM ذخیره می شود، زیرا باید حاوی ماکروهایی باشد—مانند ماکرو برای انجام این ذخیره.
ماکرو باید در ماژول ThisWorkbook برای ورک بوک قرار گیرد. این تضمین می کند که درست قبل از بسته شدن ورک بوک اجرا می شود.
افزونه های شخص ثالثی نیز وجود دارند که می توانند این کار را انجام دهند. موارد زیر چند مورد است که ممکن است بخواهید آنها را بررسی کنید.
http://www.jkp-ads.com/Download.asp#AutoSafe
http://www.asap-utilities.com