Отображение даты последнего изменения

Если вы посмотрите на свойства, хранящиеся в книге, вы заметите, что 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:" & sLMDEnd Sub 

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

Обратите внимание, что в этом макросе выполняется некоторая обработка ошибок. Причина в том, что 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") Установить f = fs.GetFile (ActiveWorkbook.Path & "" & _ ActiveWorkbook.Name) sLMD = Left (f.DateLastModified, 8) ActiveSheet.PageSetup.LeftHeader = "Last Modified:" & sLMDEnd  Sub 

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

Оцените статью
Frestage.ru
Добавить комментарий