Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.03.2010, 11:37   #1
vfv
Форумчанин
 
Регистрация: 28.07.2009
Адрес: Г.Самара
Сообщений: 54
Репутация: 10
По умолчанию Резервное копирование папки с файлами xls (Excel 2003)

Мне необходимо резервное копирование папки с файлами xls в другую папку, название которой будет отражать текущее время и дату копирования.
Копирование должно происходить при закрытии любого открытого файла xls в резервируемой папке.
Подскажите,кто знает.
vfv вне форума   Ответить с цитированием
Старый 12.03.2010, 12:45   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

Тема не имеет отношения к Excel.
Есть специальные программы, выполняющие резервное копирование по команде, или по расписанию.
Есть программы, отслеживающие открытие\закрытие файлов в указанной папке.
Совместив 2 такие программы, вы получите то, что требуется.

Можно, конечно, написать макрос, который будет делать это (макросом можно и диски форматировать при желании), но стоит ли?
EducatedFool вне форума   Ответить с цитированием
Старый 12.03.2010, 13:15   #3
Eresiarh
Пользователь
 
Регистрация: 15.01.2010
Адрес: Россия, г.Новосибирск
Сообщений: 31
Репутация: 10
По умолчанию

Для Windows XP Пуск/Программы/Стандартные/Служебные/Архивация данных жмем:
Далее
Далее
Предоставить возможность выбора объектов архивации
/Выбираем папку с файлами
/Выбираем куда сохраняем
Далее
Дополнительно
Выбираем "Добавочный" или какой вам по душе
Далее
Далее
Далее
Позднее
Установить расписание

Собственно встроено в каждую ОС
Eresiarh вне форума   Ответить с цитированием
Старый 12.03.2010, 13:42   #4
vfv
Форумчанин
 
Регистрация: 28.07.2009
Адрес: Г.Самара
Сообщений: 54
Репутация: 10
По умолчанию

Это мне не подходит.
Вот попробовал батником:
код :
copy D:\1 E:\2

D-это раздел диска
E-это флэшка

1-это папка,которую копируют
2-это папку в которую копируют

Можно ли написать макрос для файла Excel,а он находится в папке D:\1,который запустил бы этот батник?
vfv вне форума   Ответить с цитированием
Старый 12.03.2010, 13:57   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

Батник не нужен - указанную команду можно выпонить прямо из макроса.
Пример см. здесь: http://www.programmersforum.ru/showp...49&postcount=5

Макрос может выглядеть так: (поместите код в модуль ЭтаКнига)
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)    ' перед закрытием файла
    On Error Resume Next
    ' переключаем файл в режим ТОЛЬКО ЧТЕНИЕ, чтобы он мог скопироваться
    ThisWorkbook.ChangeFileAccess xlReadOnly

    ' копируем папку
    CreateObject("WScript.Shell").Run "xcopy C:\XDView D:\LINSN", 0, False

    ' переключаем обратно режим доступа к файлу
    ThisWorkbook.ChangeFileAccess xlReadWrite
End Sub

Последний раз редактировалось EducatedFool; 12.03.2010 в 14:00.
EducatedFool вне форума   Ответить с цитированием
Старый 12.03.2010, 14:40   #6
vfv
Форумчанин
 
Регистрация: 28.07.2009
Адрес: Г.Самара
Сообщений: 54
Репутация: 10
По умолчанию

Это как раз то,что я и хотел.
Огромное спасибо!
По ссылке мне не разобраться.Сказывается возраст-53г,да и компьютером я начал заниматься
3 года назад.Особенно заинтересовал Excel VBA.

Подскажите пожалуйста ещё:
1.Можно ли,чтобы копируемая папка копировалась в сжатую 7z
2.Чтобы файлы не заменялись,а добавлялись
vfv вне форума   Ответить с цитированием
Старый 12.03.2010, 15:01   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

Цитата:
1.Можно ли,чтобы копируемая папка копировалась в сжатую 7z
7z - вряд ли. По крайней мере, мне не попадался такой макрос.
В ZIP-архив загнать можно, но макрос заметно усложнится.
Но надо ли это? В наше время мегабайт места на жестком диске (да и на флешке тоже) стоит копейки.
Зачем экономить?

Цитата:
2.Чтобы файлы не заменялись,а добавлялись
Как Вы понимаете, поместить в одну папку два файла с одинаковыми именами не удастся.
Поэтому проще всего решить вопрос, создавая каждый раз новую подпапку в папке для архивации.
Это можно сделать кодом из 2 строк:

Код:
Sub test()
    ПапкаДляАрхивации = "D:\Документы\"
    НоваяПапка = ПапкаДляАрхивации & Format(Now, "DD-MM-YYYY__HH-NN-SS")
    On Error Resume Next: MkDir НоваяПапка
End Sub
В результате выполнения этого кода у меня была создана папка D:\Документы\12-03-2010__15-59-25
Сколько бы раз вы не производили архивирование, каждый раз файлы попадут в новую папку.
EducatedFool вне форума   Ответить с цитированием
Старый 12.03.2010, 15:22   #8
vfv
Форумчанин
 
Регистрация: 28.07.2009
Адрес: Г.Самара
Сообщений: 54
Репутация: 10
По умолчанию

Теперь не пойму как соединить эти 2 макроса.
Кое,что попробовал, новые папки создаются,но туда ничего не копируется.
vfv вне форума   Ответить с цитированием
Старый 12.03.2010, 15:31   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

А если так попробовать?

Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)    ' перед закрытием файла
    On Error Resume Next
    ' переключаем файл в режим ТОЛЬКО ЧТЕНИЕ, чтобы он мог скопироваться
    ThisWorkbook.ChangeFileAccess xlReadOnly

    ПапкаДляАрхивации = "D:\Документы\"
    НоваяПапка = ПапкаДляАрхивации & Format(Now, "DD-MM-YYYY__HH-NN-SS")
    On Error Resume Next: MkDir НоваяПапка
    ' путь к новой папке не должен содержать пробелов!

    ' копируем папку
    CreateObject("WScript.Shell").Run "xcopy C:\XDView " & НоваяПапка, 0, False

    ' переключаем обратно режим доступа к файлу
    ThisWorkbook.ChangeFileAccess xlReadWrite
End Sub
EducatedFool вне форума   Ответить с цитированием
Старый 12.03.2010, 16:16   #10
vfv
Форумчанин
 
Регистрация: 28.07.2009
Адрес: Г.Самара
Сообщений: 54
Репутация: 10
По умолчанию

Отлично всё работает!
Осталось сжатие копируемой папки с файлами.
так как она будет размером 300мгб.Резервное копирование будет производится 1раз в день,т.е. 30 копий в месяц.
Получается 9ггб без сжатия.Многовато.
Вот упорно рыл и нашёл ваш макрос.Но он не работает.Можно ли его поправить и чтобы сжатие было 7z ?
Ссылка:
http://forum.developing.ru/showthrea...4634#post64634

Sub СозданиеSFXархива()
' имя создаваемого архива будет иметь вид Мой архив 17-Feb-2009.exe
WinRAR_Path = """C:\Program Files\WinRAR\WinRAR.exe"""
WinRAR_Keys = " a -r -sfx -ep -agDD-MMM-YYYY "

FolderPath = "C:\Documents and Settings\Игорь\Рабочий стол\" ' папка с файлами
ArchieveFileName = Chr(34) & FolderPath & "Мой архив .exe" & Chr(34) ' имя и путь создаваемого архива
Mask = Chr(34) & FolderPath & "*.xls" & Chr(34) ' добавляем только файлы Excel
Icon = " -iicon" & Chr(34) & "C:\Program Files\Microsoft Office\OFFICE11\MSN.ICO" & Chr(34) ' иконка

CommandLine = WinRAR_Path & WinRAR_Keys & ArchieveFileName & " " & Mask & Icon
'MsgBox CommandLine
Shell CommandLine
End Sub
vfv вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрытное копирование папки с файлами BanDit Общие вопросы Delphi 36 08.03.2011 22:53
Резервное копирование БД Paradox andirock2112 БД в Delphi 6 19.05.2009 17:35
Прога Резервное копирование Yar Помощь студентам 1 28.05.2008 11:24
Резервное копирование файлов Viteef Софт 0 15.12.2007 09:02


15:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.