Статьи из блога
Статьи из блога
Как изменить дату создания документа
Метки: макросы | программы
Среда, 27 августа 2008 г.
Просмотров: 24965
Подписаться на комментарии по RSS
Версия для печати
Этот вопрос однажды мне задал один человек, но я не смог найти на него ответа. Позже, мне прислали ссылку то ли на специальную программу, то ли на программное решение. Не могу сейчас вспомнить, да это и не важно.
На самом деле, даты создания, изменения или последнего открытия документа являются встроенными свойствами любого файла и изменить их так просто не удастся.
Но можно воспользоваться двумя способами изменения даты создания или изменения документа (да, и любого файла).
Первый способ - программный на VB. Это решение я нашел на сайте Microsoft в статье . Код привожу ниже:
Option Explicit ' функции преобразования формата даты Private Declare Function SystemTimeToFileTime& Lib "kernel32" (lpSystemTIME As SYSTEMTIME, lpFileTime As FILETIME) Private Declare Function FileTimeToSystemTime& Lib "kernel32" (lpFileTime As FILETIME, lpSystemTIME As SYSTEMTIME) ' функции работы с файлами Private Declare Function lopen& Lib "kernel32" Alias "_lopen" (ByVal lpFileName As String, ByVal wReadWhite As Long) Private Declare Function lclose& Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) Private Declare Function SetFileTime& Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) ' функция для анализа ошибок Private Declare Function GetLastError& Lib "kernel32" () ' для хранения даты во внутреннем формате Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type ' для хранения даты в системном формате Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Sub Form_Load() Dim SysTime As SYSTEMTIME, NowTime As FILETIME Dim FileName$, handleF&, wReadWrite&, k&, k1& ' дата в системном формате SysTime.wYear = 2008 SysTime.wMonth = 6 SysTime.wDay = 9 SysTime.wHour = 7 SysTime.wMinute = 18 SysTime.wSecond = 24 ' преобразование даты во внутренний двоичный формат k& = SystemTimeToFileTime(SysTime, NowTime) ' ' имя файла - он должен существовать FileName$ = "C:\d.txt" 'это пример - Вы можете изменить на путь к свому файлу ' Работа с файлами только средствами функций API ' ВНИМАНИЕ! Для изменения атрибутов файла, ' он должен быть открыт в режиме "разрешения ' записи", например: режим "чтение-запись" ' Const OF_READWRITE& = 2 wReadWrite& = 2 ' Открытие файла handleF& = lopen&(FileName$, wReadWrite&) ' запись новых атрибутов даты k& = SetFileTime&(handleF&, NowTime, NowTime, NowTime) ' была ли ошибка? Можно проверить k1& = GetLastError ' код ошибки ' закрытие файла Call lclose(handleF&) End Sub
Второй способ - использование специальных программ. Например, программы .

С помощью этой программки можно изменить как дату (и время) создания файла, так и дату его изменения или последнего открытия. Простая программа, с интуитивно понятным интерфейсом.
Может быть, кто-то из читателей сайта знает другие способы изменения атрибутов документа, кроме описанных в заметке?

Поиск
Рубрики
Подписка
Читают
Обсуждают
страницы
сайты
статистика
Комментариев: 19
Мне кажется, что для таких операций больше подойдет файловый менеджер, например DISCo Commander (http://www.disco.ru/_files/dc53.exe).
Там эта операция выполняется очень удобно: File - File Attributes:
http://i34.tinypic.com/jfarlj.png
В Total Commander очень просто изменяются атрибуты файла: в меню Файл-Изменить атрибуты и все...
На vb писать макросы неудобно, а пользоваться спец. софтом для этого лучше имхо, потому что меньше проблем с кодировкой символов, имхо.
А зачем менять дату документа?
Можно создать новый документ и скопировать в него весь текст из ворда.
Спасибо!
А если таких документов 5000! что по одному открывать?, а после тотал коммндера инфа о создателе-владельце файла все равно остается.
Total не меняет дату создания, он меняет строку "изменен"!!!!!!!
В любом случае, насколько мне известно, понятия "дата создания файла" и "дата создания документа" понятия разные. Первое обеспечивается средствами файловой системы, и именно здесь Far, TimeStmp by J.Berkes и подобные программы могут помочь, второе является атрибутом документа, который хранится в самом содержимом файла, обеспечивается структурой .doc, и временные штампы ставит уже непосредственно Word.
По-крайней мере, в формате word 2003 это так. docx, тот что из word 2007, вообще сделан в виде xml-структуры, из этого могу сделать предположение, что время хранится в чём-то наподобие meta-данных, так же в самом файле.
А как изменить в MS Excel именно дату создания документа?
Внешними средствами (изменение системной даты, утилиты типа SetFileDate и т.п.) это сделать не удается. А надо.
как изменить дату в программе "компас"? подскажите пожалуйста!
to stranger_jack
с Excel не работаю давно, пользуюсь OpenOffice. В нём в диалоге свойств файла (Файл-Свойства) на первой закладке есть кнопка Сбросить - устанавливает текущее время и дату в качестве времени и даты создания документа. Пробуйте! Но не забудьте поменять и время изменения файла той же SetFileDate - это время хранится в файловой системе в отличие от даты создания документа, хранящейся внутри файла. Изменяя одно, не меняешь другое.
подскажите пожалуйста как изменить даты создания таблиц/запросов/форм/отчётов в акцессе (оччень много связей и тд и тп) =(
TotalCommander меняет обе даты: дату создания и модификации документа!
В FAR`e - Ctrl+a и меняйте
Все не так просто как кажется, Например в программе Компас изменить дату создания модели я не знаю как
Сохранить как, или изменение имени файла тут не помогает.
Если посмотреть в вкладку Файл->Информация о документе. Там все равно будет написано, реальное время создания файла.
А не вариант поменять дату на компе, отключить инет, создать новый файл, копировать всё со старого и перенести в новый? И вот Вам документ с любой датой.
А как например вместо даты поставить надпись "Давно" или "А какая раздница? =)"
Эта программа меняет дату во вкладке "общие", но в "сводке" в подробной информации дата не меняется.
Делайте через Total Commander, файлы-изменить атрибуты-проставить дату и время как будет вам угодно, программа усе сделает и будете довольны. Проверено! Рекомендую.
изменить системную дату (часы снизу справа) на компьютере и пересохранить документ с новой датой