узнать дату последнего редактирования книги

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
lilu
Сообщения: 5
Зарегистрирован: 28 фев 2008, 08:10

Добрый день!
Ситуация такова:
Имеется файл Excel в котором периодически создаются листы, нужно, если с момента последнего редактирования изменился месяц текущей даты, то определенные листы удаляются. Как узнать программно дату последнего изменения открываемой книги? :confused:
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

lilu,не знаю, правильно ли я Вас понял. Как-то делал себе такое:

Код: Выделить всё

Sub НачМесяца()
    День = Day(Date)
    If День = 1 Or День = 2 Or День = 3 Then
        'Ваш код удаления листа
    End If
End Sub
у меня этот код удалял устаревшие данные 1,2 или3 числа каждого месяца.
1,2,3 т.к. первый рабочий день месяца мог меняться.
SAS888
Сообщения: 156
Зарегистрирован: 16 янв 2008, 08:28

Функция FileDateTime("Путь и имя файла") вернет дату создания (последнего изменения файла в формате "Дата".
lilu
Сообщения: 5
Зарегистрирован: 28 фев 2008, 08:10

VictorM писал(а):lilu,не знаю, правильно ли я Вас понял. Как-то делал себе такое:

Код: Выделить всё

Sub НачМесяца()
    День = Day(Date)
    If День = 1 Or День = 2 Or День = 3 Then
        'Ваш код удаления листа
    End If
End Sub
у меня этот код удалял устаревшие данные 1,2 или3 числа каждого месяца.
1,2,3 т.к. первый рабочий день месяца мог меняться.
Вы меня поняли правильно, но открыть файл могут впервый раз и 5 го числа :(
lilu
Сообщения: 5
Зарегистрирован: 28 фев 2008, 08:10

SAS888 писал(а):Функция FileDateTime("Путь и имя файла") вернет дату создания (последнего изменения файла в формате "Дата".
Спасибо. Но...
Как я понимаю здесь надо указывать имя файла. А как узнать при открытии текущей книги не зависимо от имени? :confused:
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Значит мне было проще :) . Там программа работала ежедневно, за исключеним воскресенья (ну и праздники некоторые). А дальше проверка самих данных, они тоже все имеют дату и , если прошлый месяц - удалить.
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте lilu.
SAS888 совершенно прав

Код: Выделить всё

Sub sDf()
Dim a As Date
a = FileDateTime("C:\Книга1.xls")
Debug.Print a
End Sub
но при этом файл должен быть закрыт, иначе дата будет текущей.
Проверка программно до открытия, открытие, удаление листов по условию даты.
Лучше информацию о дате последнего изменения записывать в сам документ, это защитит от случайного пересохранения файла

Код: Выделить всё

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim s$
    s = Format(Now, "dd/mm/yy hhmmss")
    Range("A1") = s ' в ячейке
    ActiveSheet.Name = s ' в имени листа
End Sub
и затем сравнивать с "=СЕГОДНЯ()" ;)
Евгений.
lilu
Сообщения: 5
Зарегистрирован: 28 фев 2008, 08:10

Teslenko_EA писал(а):Здравствуйте lilu.
SAS888 совершенно прав

Код: Выделить всё

Sub sDf()
Dim a As Date
a = FileDateTime("C:\Книга1.xls")
Debug.Print a
End Sub
но при этом файл должен быть закрыт, иначе дата будет текущей.
Проверка программно до открытия, открытие, удаление листов по условию даты.
Лучше информацию о дате последнего изменения записывать в сам документ, это защитит от случайного пересохранения файла

Код: Выделить всё

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim s$
    s = Format(Now, "dd/mm/yy hhmmss")
    Range("A1") = s ' в ячейке
    ActiveSheet.Name = s ' в имени листа
End Sub
и затем сравнивать с "=СЕГОДНЯ()" ;)
Евгений.
ДА И я пошла по такому варианту. Может думала чет попроще есть :rolleyes:
Спасибо всем. Остановлюсь пока на этом. Но если кто что новенькое подкинет буду рада :p .
Ответить