Страницы: 1
RSS
Как узнать дату последнего изменения файла?
 
Только начал работать с макросами в , до этого плотно работал и работаю с макросами в Word.  
Подскажите, как узнать дату последнего изменения файла. И сравнить ее с датой открытия файла.  
Это нужно делать при открытии файла, т.е. переопределить команду AutoNew. Или она в Excel по-другому называется?  
Интересует Excel2003 и Excel2007
 
Не знаю, что такое AutoNew, но дату последнего сохранения файла можно узнать так  
 
Sub Macro1()  
   MsgBox DateValue(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"))  
End Sub  
 
P.S. Файл должен быть сохранён!
 
Еще есть функция:  
FileDateTime Function  
       
 
Returns a Variant (Date) that indicates the date and time when a file was created or last modified.  
 
Syntax  
 
FileDateTime(pathname)  
 
А что делает в ворде AutoNew? Может подскажем аналог..
 
{quote}{login=Лузер™}{date=10.09.2008 06:59}{thema=}{post}Еще есть функция:  
FileDateTime Function  
       
 
Returns a Variant (Date) that indicates the date and time when a file was created or last modified.  
 
Syntax  
 
FileDateTime(pathname)  
 
А что делает в ворде AutoNew? Может подскажем аналог..{/post}{/quote}
 
{quote}{login=Лузер™}{date=10.09.2008 06:59}{thema=}{post}А что делает в ворде AutoNew? Может подскажем аналог..{/post}{/quote}  
{quote}{login=Лузер™}{date=10.09.2008 06:59}{thema=}{post}  
А что делает в ворде AutoNew? Может подскажем аналог..{/post}{/quote}  
AutoNew это макрос, который выполняется при создании документа. Грубо говоря, это переопределение стандартных действий выполняемых при создании документа на основании того или иного шаблона.  
Таким образом можно изменить любую стандартную команду Word. Например, Save. У меня при сохранении файла автоматически к его имени добавляется дата и время сохранения и обновляется при повторном сохранении.  
С датой спасибо, разобрался:  
FileDateTime(ActiveWorkbook.Path)
 
хм. работает  
 
FileDateTime(ActiveWorkbook.Path)  
 
но, правильнее, наверное, так  
 
MsgBox FileDateTime(ActiveWorkbook.FullName)  
 
т.е. полный путь к файлу, а не к папке, в которой файл лежит
 
Протестировал сейчас код  
 
MsgBox FileDateTime(ActiveWorkbook.Path)  
 
он показывает время последнего изменения любого файла в папке с активной книгой. А не последнее время изменения активной книги.
 
А как теперь сделать, чтобы это действие выполнялось при открытии файла?
 
Напишите свой код между этих двух строчек и поместите этот код в модуль ЭтаКнига (ThisWorkbook)  
 
Private Sub Workbook_Open()  
 
End Sub  
 
и тогда этот код будет срабатывать при открытии книги
 
{quote}{login=Pavel55}{date=10.09.2008 11:33}{thema=}{post}  
Private Sub Workbook_Open()  
 
End Sub  
{/quote}  
Open - это стандартная команда и мы ее переопределяем? Где узнать остальные команды? Все ли команды можно переопределить?
 
А остальные команды видны в выпадающем списке над полем редактирования кода в ЭтаКнига.  
Ищите и обрящете!
 
{quote}{login=Pavel55}{date=10.09.2008 10:14}{thema=}{post}  
MsgBox FileDateTime(ActiveWorkbook.FullName)  
 
полный путь к файлу, а не к папке, в которой файл лежит{/post}{/quote}  
 
С помощью данного кода хотел сделать, что-бы в ячейке А1 выводилась дата последнего изменения книги, но выводится дата открытия файла. Что я сделал не так?  
Вот код:  
Range("A1") = FileDateTime(ActiveWorkbook.FullName)
 
По моему, данный эффект можно наблюдать в проводнике.  
У файла было одно время "изменен", открыли - текущее время.  
 
 
Посмотрите тут:  
http://www.planetaexcel.ru/forum.php?thread_id=12130
Bite my shiny metal ass!      
 
Спасибо за ссылку, интересная ветка.  
Но вот например есть файл с данными, которые периодически изменяются. Как сделать, что-бы открыв файл, пользователь (а их несколько) видел дату последнего внесения изменений (данных). В предложеных вариантах, как Вы правильно сказали "У файла было одно время "изменен", открыли - текущее время".
 
Код в модуле ЭтаКнига, приведенный ниже, запишет в ячейку A1 первого листа дату и время сохранения:  
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
 ThisWorkbook.Worksheets(1).Range("A1") = Now  
End Sub
 
Спасибо! То, что искал.
 
Есть ли возможность правильно определить дату последнего изменения активной книги    
Код fileLastDateChange = CStr(FileDateTime(ActiveWorkbook.FullName))  выдает не дату изменения книги  а дату(время) открытия книги
 
{quote}{login=avmishin}{date=20.04.2010 05:20}{thema=}{post}Есть ли возможность правильно определить дату последнего изменения активной книги    
Код fileLastDateChange = CStr(FileDateTime(ActiveWorkbook.FullName))  выдает не дату изменения книги  а дату(время) открытия книги{/post}{/quote}  
Посмотрите здесь: http://www.planetaexcel.ru/forum.php?thread_id=3596
 
{quote}{login=ZVI}{date=21.04.2010 05:21}{thema=}{post}{quote}{login=avmishin}{date=20.04.2010 05:20}{thema=}{post}Есть ли возможность правильно определить дату последнего изменения активной книги    
Код fileLastDateChange = CStr(FileDateTime(ActiveWorkbook.FullName))  выдает не дату изменения книги  а дату(время) открытия книги{/post}{/quote}  
Посмотрите здесь: http://www.planetaexcel.ru/forum.php?thread_id=3596{/post}{/quote}не сработало.выдает дату открытия активной книги.    
сработал код    
Sub Macro1()  
   MsgBox DateValue(ThisWorkbook.BuiltinDocumentProperties("Last Save Time"))  
End Sub
 
{quote}{login=ZVI}{date=28.12.2009 02:07}{thema=}{post}Код в модуле ЭтаКнига, приведенный ниже, запишет в ячейку A1 первого листа дату и время сохранения:  
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
 ThisWorkbook.Worksheets(1).Range("A1") = Now  
End Sub{/post}{/quote}  
Я в макросах ни бум бум. Подскажите почему код не работает в 2007? Создаю макрос, заменяю код, жму сохранить... потом пытаюсь его вызвать, а в списке макросов пусто :))
 
{quote}{login=Ксю}{date=03.12.2010 11:13}{thema=Re: }{post}{quote}{login=ZVI}{date=28.12.2009 02:07}{thema=}{post}  
Я в макросах ни бум бум. Подскажите почему код не работает в 2007? Создаю макрос, заменяю код, жму сохранить... потом пытаюсь его вызвать, а в списке макросов пусто :)){/post}{/quote}  
 
Вероятно потому, что этот код должен быть в модуле ЭтаКнига, а не в Module3 )
 
Ксю, этот код должен находиться в модуле книги.
 
{quote}{login=Юрий М}{date=03.12.2010 11:38}{thema=}{post}Ксю, этот код должен находиться в модуле книги.{/post}{/quote}  
Вот спасибо Вам Юрий! Выручили нас.  
 
Методом тыка сделал 2 макроса, может кому пригодится  
1-й прописывает дату в колонтитул на всех  листах при вызове макроса (вставлять просто в модуль)  
 
Sub Macro()  
For Each ws In Worksheets  
ws.PageSetup.LeftFooter = Now  
Next ws  
End Sub  
 
2-й прописывает дату в ячейку А1 на всех  листах автоматом(вставлять в модуль книги)  
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
For Each ws In Worksheets  
ws.Range("A1") = Now  
Next ws  
End Sub
 
{quote}{login=ZVI}{date=28.12.2009 02:07}{thema=}{post}Код в модуле ЭтаКнига, приведенный ниже, запишет в ячейку A1 первого листа дату и время сохранения:  
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
 ThisWorkbook.Worksheets(1).Range("A1") = Now  
End Sub{/post}{/quote}  
 
Друзья, а куда эту красоту писать, подскажите начинающему?
Страницы: 1
Наверх