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

Обновлено: 01.07.2024

Visual Basic > Примеры кода файловых каталогов

Изменение времени создания, изменения и доступа к файлам.

Программный код C Программное обеспечение для простой учетной записи — введите имя клиента. Введите акк.номер клиента. Введите Баланс Клиента. Введите имя Заказчика, чья рек. подлежит модификации. Введите новый

Сложение двух матриц на языке C++. Чтобы добиться сложения двух матриц, нам нужно 2 "размерных массива" и сложить их элементы друг с другом, вывести результат на экран. Введите элементы первой матрицы. Введите элементы числа 2.

Программные коды C++ Печать простых чисел. Например, чтобы напечатать простое число от 3 до 29, где 3 – начальное число, а 29 – конечное число, введите начальное и конечное число, чтобы найти и вывести все простые числа.

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

Программные коды C записывают данные в режиме прямого доступа к памяти — двигатель включен, код команды, номер цилиндра. Команда прерывания по смыслу. Чтение ST0 в регистре данных. Режим инициализации DMA. Предоставление байта режима. Номер канала питания на порту 10.

Деструктор — это специальная функция-член. В C++ имя должно начинаться со знака тильды (~) и должно совпадать с именем класса. В классе не может быть более одного «Деструктора». В отличие от «конструкторов», которые могут иметь параметры и

Создание случайного ненаправленного графа для — в основном это реализуется в большой сети. Временная сложность этого алгоритма составляет O (log (n)). Этот алгоритм принимает на вход количество ребер 'e'. Он соединяет вершины случайным образом &

C Language Code Convert Binary to Octal (Преобразование двоичного кода в восьмеричный) — программа принимает двоичное число в качестве входных данных и преобразует его в восьмеричное. Возьмите двоичное число в качестве входных данных. Разделите двоичное число на группы по 3 бита. Для каждой группы из 3 бит умножьте.

Ezoic

сообщить об этом объявлении

Есть ли способ для VBA напрямую изменить свойства файла, например, изменить DateLastModified для определенного файла?

Я запускаю макрос, который копирует содержимое из файла (по одному из большого списка), изменяет содержимое и записывает его обратно в файл (на самом деле просто удаляет оригинал и создает файл с тем же именем). . Проблема в том, что каждый из файлов изначально создавался в дни, относящиеся к происшествию. Имя файла содержит дату и время создания, но до изменения файлов я мог отсортировать их по убыванию по дате, но теперь все файлы модифицируются при запуске макроса. Я хотел бы взять имеющуюся у меня информацию о дате и напрямую настроить дату последнего изменения для каждого файла. Возможно?

Факты об Excel

зильфер

Активный участник

Вот код, который сделает то, что вы просите. Он использует API SetFileTime. Поместите этот код в свою рабочую книгу и назовите его, как я показал в примере sub foo:

Кажется, нет особого смысла настраивать время LastAccess, поскольку оно всегда устанавливается на время запуска кода (я полагаю, это имеет смысл). Я не испытываю эту функцию на моей машине с Win2k на работе, здесь дома это XP, так что, возможно, это так; вы всегда можете сначала настроить системные часы. Не уверен, но я пошел спать :D

тушарм

MrExcel MVP

Предполагая, что это сработает — а я не собираюсь пробовать — можно говорить о серьезном нарушении безопасности!

Вот код, который сделает то, что вы просите. Он использует API SetFileTime. Поместите этот код в свою рабочую книгу и назовите его, как я показал в примере sub foo:

зильфер

Активный участник

Что ты имеешь в виду, Тушар? Я не понимаю, почему вы считаете изменение даты/времени файлов нарушением безопасности, особенно когда это необходимо.

SetFileTime API — это задокументированная функция (погуглите ее), используемая Windows для установки времени для всех файлов. Конечно, вы можете сфальсифицировать, когда файл был создан и записан в него, но никто не должен использовать эту информацию, как пуленепробиваемую, просто измените системные часы, если хотите обойти это.

Существует приложение touch.exe, которое можно загрузить из многих мест в Интернете. Это клон одноименной утилиты unix; он делает то же самое, что и приведенный выше код.

Код работает dnickelson; попробуй, нормально.

Том Уртис

MrExcel MVP

Есть ли способ для VBA напрямую изменить свойства файла, например, изменить DateLastModified для определенного файла?

тушарм

MrExcel MVP

Видимо, вы прочитали мой пост не так, как предполагалось. Я не бросал тебе вызов. Это был просто комментарий о том, насколько уязвима ОС Windows.

Как может быть «требованием» изменить временную метку LastModified, если файл на самом деле не был изменен в то время?

Несколько лет назад я работал над системой, которую поставщик рекламировал как гражданскую версию чего-то, что соответствует стандартам безопасности правительства США. Крошечная часть соображений безопасности: только ОС может изменять временные метки файлов, такие как CreationTimestamp, LastModifiedTimestamp, LastAccessedTimestamp, LastExecutedTimestamp и т. д. как «исполняемый файл».

Что ты имеешь в виду, Тушар? Я не понимаю, почему вы считаете изменение даты/времени файлов нарушением безопасности, особенно когда это необходимо.

SetFileTime API — это задокументированная функция (погуглите ее), используемая Windows для установки времени для всех файлов. Конечно, вы можете сфальсифицировать, когда файл был создан и записан в него, но никто не должен использовать эту информацию, как пуленепробиваемую, просто измените системные часы, если хотите обойти это.

Существует приложение touch.exe, которое можно загрузить из многих мест в Интернете. Это клон одноименной утилиты unix; он делает то же самое, что и приведенный выше код.

Код работает dnickelson; попробуй, нормально.

зильфер

Активный участник

Я нисколько не обиделся, я действительно не понял, что вы имели в виду, извините за путаницу.

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

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

Я выпустил вторую версию ProductA.dll 5 января 2003 года. Любой компьютер, который входит в систему, получает этот файл, поскольку дата и время файла новее.

В апреле 2003 года ProductA.dll получает некоторые новые функции: он проходит 8-недельный тест на приемку пользователями, проходит и ждет достаточное время для развертывания.

В мае 2003 г. клиент входит в систему впервые с 5 января 2003 г. и получает ProductA.dll (с датой создания – май 2003 г.)

В июле 2003 г. моя новая версия ProductA.dll была помещена на машину доставки, она датирована апрелем 2003 г. Вышеупомянутый клиент имеет более новую версию, поэтому она игнорируется.

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

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

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

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

Всем добрый день.

Есть ли причина, по которой следующее не работает?

Sub ChangeCreationDate()
ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания:").Value =
"03/06/07"
End Sub

Должна ли дата быть в определенном формате, или это просто потому, что
есть некоторые свойства, которые вы просто не можете изменить?

Заранее спасибо

Вы должны использовать правильное имя.

Из непосредственного окна в качестве демонстрации:

<р>? ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания").Value
8 марта 2006 г., 10:16:50

ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания").Value =
"25.02.1987"

<р>? ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания").Value
25.02.1987

Это будет отражено на вкладке статистики в свойствах.

--
С уважением,
Том Огилви

«Питер Руни»

написал в сообщении
news:10BA7151-CCC9-4EE9-8B46-DD64B2E3FF56@microsoft.com.
> Добрый день всем.
>
> Есть ли причина, по которой следующее не работает?
>
> Sub ChangeCreationDate()
> ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания:").Value
=
> "03.06.07"
> End Sub
>
> Должна ли дата быть в определенном формате, или это просто потому, что
> есть некоторые свойства, которые вы просто не можете изменить?
>
> Заранее спасибо
>
> Пит
>
>
>
>

Том, спасибо за это. Значит, я ничего не могу сделать с записями на вкладке
Общие?

"Том Огилви" написал:

> Вы должны использовать правильное имя.
>
> Из ближайшего окна в качестве демонстрации:
>
> ?ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания").Value
> 08.03.2006 10:16:50
>
> ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания") .Value =
> "25.02.1987"
>
> ? ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания").Value
> 25.02.1987
>
> Это будет отражено на вкладке статистики в свойствах.
>
> --
> С уважением,
> Том Огилви
>
>
>
> "Питер Руни"

написал в сообщении
> новости: 10BA7151-CCC9-4EE9-8B46-DD64B2E3FF56@microsoft.com.
> > Добрый день всем.
>>>
> > Есть ли причина, по которой следующее не работает?
> >
> > Sub ChangeCreationDate()
> > ActiveWorkbook.BuiltinDocumentProperties.Item("Дата создания:").Value
> =
> > "06 /03/07"
> > End Sub
> >
> > Должна ли дата быть в определенном формате, или это просто потому, что
> > свойства, которые вы просто не можете изменить?
>>>
> > Заранее спасибо
> >
> > Пит
> >
> >
> >
> >
>
>
>

Я полагаю, что они взяты из файловой системы. Вам нужно будет использовать
Windows API или, возможно, один из инструментов сценариев (возможно, среду выполнения сценариев/файловый
системный объект), чтобы изменить их после того, как вы закрыли файл, если
это возможно — что Я не могу сказать, возможно ли это навскидку).

--
С уважением,
Том Огилви

ThisWorkbook.BuiltinDocumentProperties("Дата создания").Value =
Сейчас


"Питер Руни"

написал в
сообщении
новости: 10BA7151-CCC9-4EE9-8B46-DD64B2E3FF56@microsoft.com.
> Добрый день всем.
>
> Есть ли причина, по которой следующее не работает?
>
> Sub ChangeCreationDate()
> ActiveWorkbook.BuiltinDocumentProperties.Item("Дата
> создания:").Value =
> "03/06/07 "
> End Sub
>
> Должна ли дата быть в определенном формате, или это
> просто потому, что
> есть некоторые свойства, которые вы просто нельзя изменить?
>
> Заранее спасибо
>
> Пит
>
>
>
>

Чип, он меняет значение на вкладке "Статистика", но значение на вкладке
"Общие" остается неизменным.
Ура,
Пит


«Чип Пирсон» написал:

> Попробуйте
>
> ThisWorkbook.BuiltinDocumentProperties("Дата создания").Value =
> Теперь
>
>
>
> --
> С уважением,
> Чип Пирсон
> Microsoft MVP - Excel
> Pearson Software Consulting, LLC
> www.cpearson.com
>
>
> "Питер Руни"

написал в
> сообщении
> новости: 10BA7151-CCC9-4EE9-8B46-DD64B2E3FF56@microsoft.com.
> > Добрый день всем.
>>>
> > Есть ли причина, по которой следующее не работает?
> >
> > Sub ChangeCreationDate()
> > ActiveWorkbook.BuiltinDocumentProperties.Item("Создание
> > Дата:").Value =
> > " 03.06.07"
> > End Sub
> >
> > Должна ли дата быть в определенном формате, или она
> > просто потому, что
> > Есть ли какие-то свойства, которые вы просто не можете изменить?
>>>
> > Заранее спасибо
> >
> > Пит
> >
> >
> >
> >
>
>
>

Том,
Все это звучит немного сложно для моего крошечного мозга, хотя я не могу
понять, почему:
ThisWorkbook.BuiltinDocumentProperties("Creation Date" ).Value = Теперь
изменяет значение на вкладке "Статистика", но не на вкладке "Общие".
Ну, ничего, спасибо за интерес :-)


"Питер Руни"

написал в
сообщении
новости: E5F064D6-B296-488F-85AD-302C1CA199C4@microsoft.com.
> Чип, он меняет значение на вкладке "Статистика", но значение
> на вкладке
> "Общие" остается неизменным.
> Ура
> Пит
>
>
> "Чип Пирсон" написал:
>
>> Попробуйте
> >
>> ThisWorkbook.BuiltinDocumentProperties("Дата создания").Value
>> =
>> Сейчас
>>
>>
>>
>> --
>> С уважением,
>> Чип Пирсон
>> Microsoft MVP — Excel
> Pearson Software Consulting, LLC
> > www.cpearson.com
>>
>>
>> "Питер Руни"

написал
>> в
>> сообщении
>> новости: 10BA7151-CCC9-4EE9-8B46-DD64B2E3FF56@microsoft.com.
>> > Добрый день всем.
>>>>
>> > Есть ли причина, по которой следующее не работает?
>> >
>> > Sub ChangeCreationDate()
>> > ActiveWorkbook.BuiltinDocumentProperties.Item("Создание
>> > Дата:").Value =
>> > "03/06/07"
>> > End Sub
>> >
>> > Должна ли дата быть в определенном формате, или это
>>> просто потому, что
>> > есть некоторые свойства, которые вы просто не можете изменить?
>> >
>> > Заранее спасибо
>> >
>> > Пит
>> >
>> >
>>>
>> >
>>
>>
>>

Информация о теме

Пользователи, просматривающие эту тему

В настоящее время эту тему просматривают 1 пользователь. (0 участников и 1 гость)


VBAX Regular Присоединился к ноябрь 2018 г. Сообщений 25 Местоположение

[ПОМОЩЬ] Дата создания файла Word, дата изменения и автор

кто-нибудь из настоящих опытных профессионалов VBA может помочь мне с этой задачей?
подробности см. на прикрепленном изображении.

VBAX Guru Присоединился к нам с ноября 2005 г. Местоположение Tecumseh, OK Сообщений: 4 962 Местоположение

В модуль вставьте приведенный ниже код. Добавьте ссылку, как показано в комментарии, или используйте позднее связывание, как показано в комментариях. Если вы не знаете, как добавлять ссылки, вы должны научиться, поэтому спрашивайте, если это необходимо.

Функция допускает 2 входа, поэтому вам нужен только 1 пользовательская функция, а не 3. В комментарии перед функцией показано, как вызвать ее как формулу ячейки.


VBAX Regular Присоединился к ноябрь 2018 г. Сообщений 25 Местоположение

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

какой-нибудь другой способ заставить это работать?

VBAX Guru Присоединился к нам с ноября 2005 г. Местоположение Tecumseh, OK Сообщений: 4 962 Местоположение

Вы можете прикреплять файлы. Нажмите кнопку «Дополнительно» в правом нижнем углу ответа. Затем щелкните ссылку «Управление вложениями» под этим полем. Оттуда это просто просматривать и загружать.

Существует множество руководств, объясняющих, как добавить модуль и ссылки.

Я мог бы сделать ссылку поздней привязкой, но вы не получили бы преимуществ от ранней привязки. Раннее связывание почти всегда позволяет IntelliSense работать с этим объектом. Это упрощает изучение методов и свойств. Если дойдет до дела, я могу прокомментировать, раскомментировать строки, как я объяснил в комментариях к коду. Но лучше всего научиться этой простой вещи.
Используйте UDF в качестве ячейки, как я прокомментировал в первой строке.

Наконец, вам, вероятно, потребуется передать полное имя с путем к функции. В вашем последнем примере не было пути. Если вы хотите использовать путь к документу с этим макросом, вы можете закодировать функцию как таковую.


VBAX Regular Присоединился к ноябрь 2018 г. Сообщений 25 Местоположение

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

кстати, БОЛЬШОЕ спасибо за попытку помочь новичку

VBAX Guru Присоединился к нам с ноября 2005 г. Местоположение Tecumseh, OK Сообщений: 4 962 Местоположение

Можно легко обойти ограничение компании, уменьшив проблему до одного шага. Во всяком случае, так я решаю проблемы.

Я прикрепил пример, над которым работал. Измените значение в A1 на существующий диск:\path\filename.ext.


VBAX Regular Присоединился к ноябрь 2018 г. Сообщений 25 Местоположение

Теперь мне просто нужно выяснить, как добавить автора в микс.
думаю, все остальное я смогу сделать сам.

дополнительный вопрос.
Можете ли вы порекомендовать место, где новичок может начать изучать VBA примерно на начальном уровне?

VBAX Guru Присоединился к нам с ноября 2005 г. Местоположение Tecumseh, OK Сообщений: 4 962 Местоположение

GetDetailsOf — это хороший способ прочитать свойства файла Windows. Для встроенных свойств Excel необходимы другие методы.

Читайте также: