Добрый день! Есть Excel файл и нужно каждый день сохранять резервную копию в отдельную папку. Можно настроить, что бы файл с названием "Отчет лаборатория" каждый день, к примеру в 15.00, сохранялся в папку "C:\Users\user\Desktop\В работе" в формате "Отчет лаборатория дата (в формате дд.мм.гггг)". Не знаю, нужно прикладывать сам файл или нет. Сам рабочий файл с совместным доступом. Можно сделать так, что бы он сам не закрывался, а просто сохранялся как бы фоном, что бы оператор даже не замечал этого?
Добрый день! Есть Excel файл и нужно каждый день сохранять резервную копию в отдельную папку. Можно настроить, что бы файл с названием "Отчет лаборатория" каждый день, к примеру в 15.00, сохранялся в папку "C:\Users\user\Desktop\В работе" в формате "Отчет лаборатория дата (в формате дд.мм.гггг)". Не знаю, нужно прикладывать сам файл или нет. Сам рабочий файл с совместным доступом. Можно сделать так, что бы он сам не закрывался, а просто сохранялся как бы фоном, что бы оператор даже не замечал этого?AVI
AVI, мне кажется, это это будет правильнее поручить Аутлуку (если он есть), потому что иного точного решения в Экселе, кроме постоянно работающего в фоновом режиме макроса, я не вижу... А это, как Вы понимаете, жуткий костыль. Можно ещё макрос, проверяющий текущее время вызывать во всех приходящих в голову событиях, но это не точно и тоже не по фэншую...
AVI, мне кажется, это это будет правильнее поручить Аутлуку (если он есть), потому что иного точного решения в Экселе, кроме постоянно работающего в фоновом режиме макроса, я не вижу... А это, как Вы понимаете, жуткий костыль. Можно ещё макрос, проверяющий текущее время вызывать во всех приходящих в голову событиях, но это не точно и тоже не по фэншую...StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Думаю, что в 15:00 сохранять - не очень хорошая идея. Именно в это время файл может быть в процессе редактирования. Но, допустим, Вы сохранили. А потом в 15:05 в файле кто-то что-то изменил - копия получится неактуальной. Поэтому предлагаю создавать копию после сохранения исходного файла. Если сохраняли несколько раз, то будет копия последнего варианта.
И да - формат ДД.ММ.ГГГГ неудобен для сортировки файлов по названию. Гораздо удобнее ГГГГ.ММ.ДДД
И еше - копию нужно сохранять не в ту папку, где лежит исходник. На это специально сделана проверка в макросе. Если такого не будет, то при открытии и сохранении этой копии файла для копии создастся своя копия, а нам этого не нужно. Конечно можно сохранять копию в xlsx, но я не знаю - есть ли у Вас в том файле еще макросы и нужно ли их сохранять.
В модуль книги [vba]
Код
Private Sub Workbook_AfterSave(ByVal Success As Boolean) 'после сохранения файла If Success Then 'если сохранение прошло успешно wbp_ = "C:\Users\user\Desktop\В работе" 'папка для сохранения ' wbp_ = "g:\Моя\Стереть\Для копирования"'это моя папка для проверки работы макроса. If ThisWorkbook.Path <> wbp_ Then 'если папка этого файла не равна папке для сохранения Me.SaveCopyAs wbp_ & "\Отчет лаборатория " & Format(Date, "YYYY_MM_DD") & ".xlsm" 'сохранить копию в ту папку End If End If End Sub
[/vba]
Думаю, что в 15:00 сохранять - не очень хорошая идея. Именно в это время файл может быть в процессе редактирования. Но, допустим, Вы сохранили. А потом в 15:05 в файле кто-то что-то изменил - копия получится неактуальной. Поэтому предлагаю создавать копию после сохранения исходного файла. Если сохраняли несколько раз, то будет копия последнего варианта.
И да - формат ДД.ММ.ГГГГ неудобен для сортировки файлов по названию. Гораздо удобнее ГГГГ.ММ.ДДД
И еше - копию нужно сохранять не в ту папку, где лежит исходник. На это специально сделана проверка в макросе. Если такого не будет, то при открытии и сохранении этой копии файла для копии создастся своя копия, а нам этого не нужно. Конечно можно сохранять копию в xlsx, но я не знаю - есть ли у Вас в том файле еще макросы и нужно ли их сохранять.
В модуль книги [vba]
Код
Private Sub Workbook_AfterSave(ByVal Success As Boolean) 'после сохранения файла If Success Then 'если сохранение прошло успешно wbp_ = "C:\Users\user\Desktop\В работе" 'папка для сохранения ' wbp_ = "g:\Моя\Стереть\Для копирования"'это моя папка для проверки работы макроса. If ThisWorkbook.Path <> wbp_ Then 'если папка этого файла не равна папке для сохранения Me.SaveCopyAs wbp_ & "\Отчет лаборатория " & Format(Date, "YYYY_MM_DD") & ".xlsm" 'сохранить копию в ту папку End If End If End Sub
Добрый день. Если надо именно по времени, то вот так можно (формат даты, как и у _Boroda_) [vba]
Код
Private Sub Workbook_Open() Application.OnTime TimeValue("15:00:00"), "save_" End Sub Sub save_() ThisWorkbook.SaveAs "C:\Users\user\Desktop\В работе\Отчет лаборатория " & Format(Date, "YYYY_MM_DD") & ".xls" End Sub
[/vba]
Добрый день. Если надо именно по времени, то вот так можно (формат даты, как и у _Boroda_) [vba]
Код
Private Sub Workbook_Open() Application.OnTime TimeValue("15:00:00"), "save_" End Sub Sub save_() ThisWorkbook.SaveAs "C:\Users\user\Desktop\В работе\Отчет лаборатория " & Format(Date, "YYYY_MM_DD") & ".xls" End Sub
_Boroda_, Спасибо за советы! Не критично когда именно можно сохранять. Этот файл в течение рабочего дня постоянно редактируется и за один день восстановить информацию не сложно. Сохраняется он, во-первых, потому что коллеги могу сами это сделать или забывают. И, во-вторых, потому что мало ли кто возьмет и удалит основной рабочий файл. По большому счету не важен и формат даты. В целом, можно просто делать копию файла с заменой. важен сам факт того, что есть резервная копия там, где она точно не исчезнет. Тут есть вероятность того, что кто-то что-то внутри файла может понаудалять, поэтому и нужно хранить несколько копий, что бы коцаный файл случайно не заменил резервную копию. В файле больше нет макросов и не планируется быть. Адрес сохранения копии отличен от адреса самого исходника. Важно, что он для совместного доступа и важно, что исходник лежит в сетевой папке на серваке.
Поэтому предлагаю создавать копию после сохранения исходного файла. Если сохраняли несколько раз, то будет копия последнего варианта.
Это был бы идеальный вариант, но боюсь, что пользователи совсем не будут тыкать кнопочку "сохранить".
_Boroda_, Спасибо за советы! Не критично когда именно можно сохранять. Этот файл в течение рабочего дня постоянно редактируется и за один день восстановить информацию не сложно. Сохраняется он, во-первых, потому что коллеги могу сами это сделать или забывают. И, во-вторых, потому что мало ли кто возьмет и удалит основной рабочий файл. По большому счету не важен и формат даты. В целом, можно просто делать копию файла с заменой. важен сам факт того, что есть резервная копия там, где она точно не исчезнет. Тут есть вероятность того, что кто-то что-то внутри файла может понаудалять, поэтому и нужно хранить несколько копий, что бы коцаный файл случайно не заменил резервную копию. В файле больше нет макросов и не планируется быть. Адрес сохранения копии отличен от адреса самого исходника. Важно, что он для совместного доступа и важно, что исходник лежит в сетевой папке на серваке.
боюсь, что пользователи совсем не будут тыкать кнопочку "сохранить"
Что значит "не будут"? Открыл файл - что-то поменял - закрыл - Excel сам предложит сохранить - ответ "Да" - автоматически создается копия, ответ "нет" - копию и не нужно создавать
боюсь, что пользователи совсем не будут тыкать кнопочку "сохранить"
Что значит "не будут"? Открыл файл - что-то поменял - закрыл - Excel сам предложит сохранить - ответ "Да" - автоматически создается копия, ответ "нет" - копию и не нужно создавать