Excel макрос дата файла

Определение даты и времени создания или последнего изменения любого файла в VBA Excel. Функция FileDateTime — описание, синтаксис, примеры.

Описание

Определение функции FileDateTime:

FileDateTime — это функция, которая возвращает дату и время создания или последнего изменения любого файла по его полному имени. Тип возвращаемых данных — Variant (Date).

Формат отображения даты и времени зависит от региональных настроек системы. Российский формат — dd.mm.yyyy h:nn:ss.

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

Синтаксис

pathname — полное имя файла, включающее букву диска, вложенные папки и краткое имя файла с расширением.

Примеры с функцией FileDateTime

Пример 1

Есть файл «Отчет.xlsx» по адресу «C:UsersEvgeniyDesktop», который был изменен ‎13 ‎августа ‎2022 ‎г., ‏‎0:55:05 (окно «Свойства:Отчет.xlsx»). Проверяем, что будет отображено в информационном окне MsgBox при использовании переменных разного типа для присвоения значений, возвращенных функцией FileDateTime:

Sub Primer1()

Dim d As Date, s As String, n As Double

d = FileDateTime(«C:UsersEvgeniyDesktopОтчет.xlsx»)

MsgBox d  ‘Результат: 13.08.2022 0:55:05

s = FileDateTime(«C:UsersEvgeniyDesktopОтчет.xlsx»)

MsgBox s  ‘Результат: 13.08.2022 0:55:05

n = FileDateTime(«C:UsersEvgeniyDesktopОтчет.xlsx»)

MsgBox n  ‘Результат: 44786,0382523148

End Sub

Пример 2

Примеры отображения в VBA Excel только даты, возвращенной функцией FileDateTime:

Sub Primer2()

Dim d As Date

d = FileDateTime(«C:UsersEvgeniyDesktopОтчет.xlsx»)

MsgBox Format(d, «Short Date»)  ‘Результат: 13.08.2022

MsgBox Format(d, «dd.mm.yy»)  ‘Результат: 13.08.22

End Sub

Пример 3

Есть папка с файлами:

Необходимо из кода VBA Excel получить список файлов в папке «C:UsersEvgeniyDesktopНовая папка», пройтись по списку файлов циклом For Each… Next и записать на активный рабочий лист следующую информацию:

  • № п/п — в первый столбец со второй строки;
  • имя файла — во второй столбец;
  • дату и время изменения файла — в третий столбец;
  • создать строку заголовков — «№ п/п», «Имя» и «Дата»;
  • осуществить автоподбор ширины столбцов и добавить границы ячеек.

Для получения списка файлов в заданной папке будем использовать метод FileSystemObject.GetFolder:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

Sub Primer3()

Dim myPath As String, myFolder As Folder, myFile As File, n As Integer

‘Записываем в переменную myPath полное имя папки

myPath = «C:UsersEvgeniyDesktopНовая папка»

    ‘Создаем новый экземпляр FileSystemObject

    Dim fso As New FileSystemObject

    ‘Присваиваем переменной myFolder ссылку на объект Folder

    Set myFolder = fso.GetFolder(myPath)

    ‘Проверяем, есть ли файлы в папке myFolder

    If myFolder.Files.Count = 0 Then

        MsgBox «В папке «» & myPath & «» файлов нет»

        Exit Sub

    End If

    ‘Записываем номер по порядку в первый столбец активного листа,

    ‘имя файла — во второй столбец,

    ‘дату изменения файла — в третий столбец.

    For Each myFile In myFolder.Files

        n = n + 1

        Cells(n + 1, 1) = n

        Cells(n + 1, 2) = myFile.Name

        Cells(n + 1, 3) = FileDateTime(myFile.Path)

    Next

    ‘Заполняем строку заголовков

    With Cells(1, 1)

        .Value = «№ п/п»

        ‘Автоподбор ширины столбца

        .EntireColumn.AutoFit

        ‘Полужирное начертание

        .Font.Bold = True

        ‘Выравнивание значения по центру

        .HorizontalAlignment = xlCenter

    End With

    With Cells(1, 2)

        .Value = «Имя»

        .EntireColumn.AutoFit

        .Font.Bold = True

        .HorizontalAlignment = xlCenter

    End With

    With Cells(1, 3)

        .Value = «Дата»

        .EntireColumn.AutoFit

        .Font.Bold = True

        .HorizontalAlignment = xlCenter

        ‘Добавляем границы ячеек

        .CurrentRegion.Borders.LineStyle = True

    End With

End Sub

Результат работы кода:

Если сравнить дату и время изменения файлов в папке проводника и в таблице Excel, то можно заметить, что время изменения файла «Certificate.pdf» разнится на 1 час. Непонятно, почему это происходит, так как в свойствах файла также указано время изменения, как в папке проводника:

Именно из-за этого случая я добавил словосочетание как правило в утверждение, что функция FileDateTime возвращает дату и время, которые отображаются в папке проводника справа от выбранного файла в столбце «Дата изменения» или «Дата», что означает — возможны исключения.


 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Ребята, добрый день!
Хочу в конце своего макроса добавить строчку, которая будет сохранять файл с Названием «Прайс 2013-09-19»
в формате Эксель 2003-2007,дата всегда сегодняшняя, добавляю следующую строчку в макрос:

ActiveWorkbook.SaveAs Filename:=(«Прайс & TEXT(TODAY(),»»ГГГ-ММ-ДД»), «.xls»

Не хочет работать,что я делаю не так?

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#2

19.09.2013 16:44:50

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#4

19.09.2013 17:51:50

А так:

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
ActiveWorkbook.SaveAs Filename:=strNewName

или

Код
ActiveWorkbook.SaveAs Filename:="Прайс " & Format(Date, "YYYY-MM-DD") & ".xls"
 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Работает,спасибо!

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

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

Запишите рекордером сохранение в этом формате, используйте код.
У меня тут 2003 — не могу проверить. А у Вас вероятно 2007-13.

 

Veronika

Пользователь

Сообщений: 15
Регистрация: 08.06.2013

Нашла выход из ситуации:

ActiveWorkbook.SaveAs Filename:=(«Прайс » & Format(Date, «YYYY-MM-DD») & «.xls»), FileFormat:=xlNormal

 

SLAVICK

Пользователь

Сообщений: 70
Регистрация: 01.01.1970

#8

20.09.2013 17:37:41

А если расширение файла другое (например xlsm,xlsb ….)? … нужно определить его:

Код
расширение_файла = (Split(ActiveWorkbook.Name, ".")(UBound(Split(ActiveWorkbook.Name, "."))))

Потом уже можно смело сохранять:

Код
strNewName = "Прайс " & Format(Date, "YYYY-MM-DD") & "." & расширение_файла
ActiveWorkbook.SaveAs Filename:=strNewName

или

Код
ActiveWorkbook.SaveAs Filename:="Прайс " & Format(Date, "YYYY-MM-DD") & "." & расширение_файла

Изменено: SLAVICK20.09.2013 17:39:38

Макрос для «Сохранить как» *имя файла + текущая дата*

ArkaIIIa

Дата: Вторник, 07.10.2014, 12:59 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Добрый день, уважаемые знатоки VBA!

Подскажите, пожалуйста, код для макроса, со следующей логикой:
При нажатии условной «кнопки» файл, в модуле которого есть этот макрос, сохраняется через функцию «Сохранить как» с именем исходного файла + текущей датой, в той же самой папке.
Пример не прикладываю, т.к. ответ на вопрос не зависит от содержимого книги.

Заранее благодарю всех откликнувшихся!

 

Ответить

_Boroda_

Дата: Вторник, 07.10.2014, 13:20 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

Sub tt()
      ThisWorkbook.SaveAs (ThisWorkbook.Path & «» & Replace(ThisWorkbook.Name, «.xls», «_» & Format(Date, «YYYYMMDD») & «.xls»))
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

ArkaIIIa

Дата: Вторник, 07.10.2014, 13:23 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

_Boroda_
Да, Александр, именно то, что нужно! Спасибо!

 

Ответить

Rioran

Дата: Вторник, 07.10.2014, 13:42 |
Сообщение № 4

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

ArkaIIIa, привет.

Предлагаю такой код. Можно всё в одну строчку сделать, развернул только для наглядности.

UPD: Опять Александр самый быстрый =)

[vba]

Код

Sub Rio_ReSave_Spell()

‘Author:    Roman Rioran Voronov
‘Date:      the 7-th of October, 2014
‘Feedback:  voronov_rv@mail.ru

‘Макрос позволяет сохранить книгу в той же папке, где книга сохранена сейчас
‘К названию сохраняемой книги добавляется «_[Дата без точек].[Формат]», по умолчанию .xlsb

Dim strA As String ‘Текущий адрес книги на ПК
Dim strB As String ‘Имя книги без формата
Dim strC As String ‘Формирование даты + формата

strA = ThisWorkbook.Path & «»
strB = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, «.xl») — 1)
strC = «_» & Replace(Str(Date), «.», «») & «.xlsb»

‘Сшиваем заготовку из частей
ThisWorkbook.SaveAs Filename:=strA & strB & strC

End Sub

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranВторник, 07.10.2014, 13:58

 

Ответить

Alex_ST

Дата: Вторник, 07.10.2014, 23:32 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Ну и я свои пять копеек внесу.
Следующие процедуры не привязаны к версии офиса.
Да и дата с секундами. Чтобы можно было по несколько раз в день «предохраняться»
Эта процедура точно «по заданию» — пересохранение файла под другим именемА это «вариация на тему» — сохранение копии рабочего файла. А сам файл не переименовывается.

А вообще-то, если бы ArkaIIIa воспользовался поиском по форуму, то в Готовых решениях он на первой же странице без труда нашёл бы топик Макрос Save_Copy_As, в котором рассматриваются варианты.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STВторник, 07.10.2014, 23:36

 

Ответить

Egon

Дата: Пятница, 07.04.2017, 08:55 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день! Очень полезный макрос, вот только я не смог найти как прописать так, чтобы он ко всему прочему сохранял по определенному пути? Заранее спасибо!

 

Ответить

Pelena

Дата: Пятница, 07.04.2017, 09:11 |
Сообщение № 7

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Вместо ThisWorkbook.Path пропишите «определенный путь»


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Alex_ST

Дата: Пятница, 07.04.2017, 13:25 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

А ещё лучше не в ручную прописывать путь, а глянуть по ссылке на Макрос Save_Copy_As



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

stepan190

Дата: Вторник, 05.05.2020, 21:39 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Alex_ST,
Применил ваш подход

[vba]

Код

With ThisWorkbook
.SaveCopyAs (.Path & «» & Replace(.Name, «.» & Split(.Name, «.»)(1), «_» & Format(Now, «YYYY-MM-DD_hh.mm.ss») & «.» & Split(.Name, «.»)(1)))

[/vba]
У меня из макроса сохраняется файл с другим именем, но после того, как я хочу его удалить например через Total commwnder вызывается критическая ошибка

К сообщению приложен файл:

__.docx
(93.2 Kb)


Stepan

Сообщение отредактировал stepan190Вторник, 05.05.2020, 21:40

 

Ответить

Hugo

Дата: Вторник, 05.05.2020, 22:20 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3140


Репутация:

670

±

Замечаний:
0% ±


2010, теперь уже с PQ

stepan190, файл без проблем удаляется, значит ошибка не в этом куске кода.


excel@nxt.ru
webmoney: R418926282008 Z422237915069

 

Ответить

Alex_ST

Дата: Среда, 06.05.2020, 12:22 |
Сообщение № 11

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Попробуйте узнать, какой процесс блокирует созданный Вами файл.
Проще всего для этого можно поставить ОЧЕНЬ ПОЛЕЗНУЮ утилиту Unlocker и попытаться разблокировать файл.
Unlocker выдаст окно со списком процессов, «держащих» файл.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STСреда, 06.05.2020, 12:24

 

Ответить

Skip to content

Как создать резервную копию книги с сегодняшней датой

На чтение 2 мин. Просмотров 2.6k.

Что делает макрос: Макрос позволяет создать резервную копию книги и сохраняет ваш файл в папке с сегодняшней датой.

Содержание

  1. Как это работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как это работает

Хитрость данного макроса заключается в сопоставлении частей файла. Новое имя файла состоит из трех частей: путь, исходный файл и сегодняшняя дата.

Путь определяем с помощью свойства Path объекта ThisWorkbook.
Второй частью нового файла является исходное имя файла. Мы используем свойство Name объекта ThisWorkbook.
Текущую дату берем с помощью функции Date. Вы заметите, что мы форматируем дату (Format (Date, «мм-дд-гг»)). Это происходит потому, что по умолчанию функция даты возвращает мм / дд / гггг. Мы используем дефис вместо слэша, иначе это вызовет ошибку при попытке сохранить файл (Windows не позволяет использовать «/» в именах файлов.)

Код макроса

Sub SozdatRezervnuyuKopiyu()
'Сохранить книгу с новым именем
ThisWorkbook.SaveCopyAs _
Filename:=ThisWorkbook.Path & "" & _
Format(Date, "mm-dd-yy") & " " & _
ThisWorkbook.Name
End Sub

Как работает этот код

Используем одну единственную строку, которая с помощью метода SaveCopyAs создает новый имя файла и использует метод для сохранения файла.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

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

Сохраните файл Excel с датой и временем, используя код VBA


стрелка синий правый пузырь Сохраните файл Excel с датой и временем, используя код VBA

За исключением ввода даты и времени вручную, следующий код VBA может помочь вам автоматически добавить текущую дату и время к имени файла. Пожалуйста, сделайте следующие шаги:

1. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: автоматическое добавление даты и времени к имени файла

Sub filesave()
'Update 20141111
ActiveWorkbook.SaveAs ("C:UsersdtDesktopmy informationnov-kte-data " & Format(Now(), "DD-MMM-YYYY hh mm AMPM") & ".xlsx")
End Sub

3, Затем нажмите F5 ключ для запуска этого кода, текущая дата и время были добавлены после имени вашей активной книги, см. снимок экрана:

документ-сохранить-файл-с-датой-1

Внимание: В приведенном выше коде вам нужно изменить путь к файлу и имя по своему усмотрению.


Статьи по теме:

Как сохранить файл Excel со значением ячейки?

Как показать путь к файлу в строке заголовка или панели инструментов в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Excel макрос высота ячейки
  • Excel макрос выравнивание в ячейке
  • Excel макрос выпадающего списка ячейки
  • Excel макрос выделить ячейку цветом
  • Excel макрос выделенный текст