Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Дата и время создания рабочей книги

    Дата и время создания открытой или закрытой рабочей книги в VBA Excel. Использование внутренних свойств документа и системных атрибутов файла.

    Дата и время создания рабочей книги

    При автоматизации отчётности или работе с архивами Excel-файлов часто возникает необходимость узнать, когда именно была создана рабочая книга. Это может быть важно для аудита, контроля версий или просто из любопытства.

    В этой статье разберём, как получить дату и время создания активной книги, любой другой открытой книги, а также закрытой книги с помощью встроенных средств VBA и объектов файловой системы.

    Существует два принципиально разных источника даты создания файла:

    • Внутренние свойства документа (BuiltinDocumentProperties)
      Дату создания из внутренних свойств документа мы видим в окне «Свойства» файла на вкладке «Подробно» в значении параметра «Дата создания содержимого».
    • Системные атрибуты файла (дата создания файла операционной системой)
      Дату создания документа операционной системой мы видим в окне «Свойства» файла на вкладке «Подробно» в значении параметра «Дата создания», а также на вкладке «Общие» в значении параметра «Создан».

    Вкладка «Подробно» в окне «Свойства» файла

    Обратите внимание: на скриншоте дата создания (системный атрибут файла) больше даты создания содержимого (внутреннее свойство документа). Это результат смены операционной системы.

    В большинстве реальных задач обычно используют именно системную дату создания файла, но мы рассмотрим оба способа.

    Дата и время создания активной книги

    Если книга уже открыта в Excel, получить её дату создания можно двумя способами: через встроенные свойства документа или через файловую систему (по пути к файлу).

    Получение даты через свойства документа

    Пример с получением даты и времени создания активной книги из внутренних свойств документа:

    Дата создания содержимого книги Excel из внутренних свойств файла

    Свойство BuiltinDocumentProperties("Creation Date") возвращает дату создания, записанную внутри файла. Оно доступно для любой сохранённой книги.

    Получение даты через файловую систему

    Пример с получением даты и времени создания активной книги через файловую систему:

    Дата создания книги Excel, полученная из данных файловой системы

    Этот способ обращается к файловой системе и возвращает реальную дату создания файла, если, конечно, не произошла смена операционной системы. В файловой системе новой ОС, при копировании документов на диск, в качестве даты создания файла записывается текущая дата.

    ⚠️ Ограничение
    Методы, основанные на файловой системе, работают только для сохранённых книг. Новая несохранённая книга не имеет файла на диске — дату создания получить невозможно.

    Дата и время создания открытой книги

    Выше мы рассмотрели способы получения даты и времени создания активной книги, как частного случая из группы открытых книг. Следующий пример кода VBA Excel позволяет выбрать любую книгу из коллекции открытых книг и определить дату и время ее создания:

    Этот код VBA создает список открытых файлов Excel непосредственно в диалоговом окне InputBox.

    Список открытых файлов Excel в диалоговом окне InputBox

    Чтобы выбрать файл, достаточно в поле ввода указать его номер.

    Дата и время создания закрытой книги

    Для получения даты и времени создания закрытого файла, используется исключительно файловая система. VBA Excel позволяет обратиться к любому файлу на диске.

    Пример определения даты и времени создания закрытой книги с выбором её через стандартное диалоговое окно выбора файла:

    Если системные настройки в вашем регионе отображают дату в неподходящем виде, используйте принудительный формат даты, как в примере из раздела «Дата и время создания открытой книги».

    Дата последнего изменения файла

    Время последнего изменения рабочей книги Excel можно узнать с помощью встроенной функции VBA — FileDateTime. Если изменений в файле не производилось, то будет возвращена дата создания документа.

    Пример кода VBA Excel для получения даты последнего изменения активной книги:

    Подробнее о функции FileDateTime можно узнать из отдельной статьи об этой функции.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.