Если вы посмотрите на свойства, хранящиеся в книге, вы заметите, что Excel хранит довольно много информации о файле. Один из элементов — это дата и время, которые просто помечаются как «Изменено». Многие люди называют это датой «последнего изменения», но на самом деле она отражает время последнего сохранения книги.

Если вы хотите использовать эту дату в своей книге (например, в верхнем или нижнем колонтитуле), вы можете сделать это с помощью свойства 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

В этом макросе следует отметить ряд моментов. Прежде всего, он пытается определить дату последнего сохранения книги. Если эта информация не может быть определена, устанавливается заголовок «Not Set».

Обратите внимание, что в этом макросе выполняется некоторая обработка ошибок. Причина в том, что Excel вернет ошибку, если определенное свойство документа (в данном случае BuiltinDocumentProperties) не установлено. Ошибка должна быть перехвачена и обработана, что и делается здесь.

Здесь следует отметить еще один момент. В некоторых версиях Excel значение Err, возвращаемое, если свойство не установлено, на самом деле не 440 (как показано здесь), а какое-то другое нечетное число, например -2147467259. Это действительно очень странно. Почему значение 440 (правильный код ошибки)

будут возвращены в одном случае, а не в другом, я не знаю.

(Возможно, какой-нибудь другой гуру Excel знает ответ.) Если у вас есть эта проблема, вы можете выбрать два подхода. Во-первых, вы можете заменить значение 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

Независимо от того, какой макрос вы используете, помните, что после запуска макрос установит в левом заголовке желаемую информацию. Эта информация не изменится снова, пока вы снова не запустите макрос. Таким образом, если вам всегда нужна актуальная дата в заголовке, вам следует либо запускать макрос периодически (возможно, прямо перед печатью), либо настроить его на запуск всякий раз, когда вы открываете документ.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2285) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Displaying_the_Last_Modified_Date [Отображение даты« последнего изменения »].