Отображение даты «последнего изменения» (Microsoft Excel)
Если вы посмотрите на свойства, хранящиеся в книге, вы заметите, что 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 [Отображение даты« последнего изменения »]
.