Авторизация

Рубрики блога


Рекомендуем



Последние комментарии

Облако тегов


Устами великих

"Странный этот мир, где двое смотрят на одно и то же, а видят полностью противоположное." © Агата Кристи

Реклама



MS Office и VBA Рубрика содержит интересные решения, малоизвестные функции и возможности, надстройки и макросы, в общем, все то, что может сделать вашу работу в пакете программ MS Office (в первую очередь - Excel, Word, Access) более эффективной.
10
Ноя

Excel Backups - Сохранение резервных копий важных файлов

рейтинг материал 5.0 (1) | количество просмотров 6754 | количество коментариев 0
Заставляем эксель делать резервные копии файлов с помощью макроса и учимся как сохранить макрос в Личной книге макросов
Download source

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

Есть советы на счет того, где искать резервные копии файлов, которые формируются через автосохранение заложенное в настройках экселя, но в моем случае это оказалось бесполезным, т.к. файлов просто не было. Залез на форумы, облазил все настройки и параметры сохранения, все советы оказались недейственными или неактуальными, а в настройках было все в порядке. В итоге пришел к выводу, что это возможно какой-то баг нестыковки после переустановки – первоначально был установлен седьмой офис, его удалили и поставили десятый. Самый очевидный вариант – повторная переустановка Microsoft Office.

Но мне стало интересно, есть ли возможность прикрутить какой-то «костыль» к экселю, чтобы заставить его сохранять резервную копию файлов в фоновом режиме, оказалось можно – нашел макрос, которые немного переписал:


Public Sub Auto_Close()
 'запускает макрос Backup_Active_Workbook при выходе из файла
 Call Backup_Active_Workbook
End Sub

Sub Backup_Active_Workbook()
 'v1.1
 'теперь учитывает формат файла исходника
 
 Dim x As String
 strPath = "c:\BackUps" 'папка дл¤ сохранени¤ резервной копии
 On Error Resume Next
 x = GetAttr(strPath) And 0
 
 'определяем имя и обрезаем в этом имение формат файла
 strFileFull = ActiveWorkbook.Name
 strFile = Mid(strFileFull, 1, InStrRev(strFileFull, ".xl") - 1)
 
 'опять определяем имя файла и вырезаем из него только формат файла
 strFileFull = ActiveWorkbook.Name
 FileFormatMe = Mid(strFileFull, InStrRev(strFileFull, ".xl"))
 endMe = Mid(FileFormatMe, 2)
 If Err = 0 Then ' если путь существует - сохраняем копию книги, добавляя дату-время
 strDate = Format(Now, "dd-mm-yy hh-mm")
 FileNameXls = strPath & "\" & strFile & " " & strDate & FileFormatMe
 ActiveWorkbook.SaveCopyAs FileName:=FileNameXls
 Else 'если путь не существует - выводим сообщение, такая же ошибка бужет в случае закрытия чистой книги
 MsgBox "папка " & strPath & " недоступна или не существует!", vbCritical
 End If
End Sub

При выходе из файла в фоновом режиме, выполняется сохранение его копии в папке BackUps на диске C с фиксированием даты и времени в имени файла, таким образом, Вы всегда сможете найти резервную копию всех когда-либо закрытых файлов

PS Макрос нужно сохранять не в рабочей книге, а в «Персональной книге макросов», проще всего это сделать так:

Запись макроса / указываем имя макроса и выбираем место сохранения - Сохранить в: Личная книга макросов / выполнить любое действие в экселе, например, поставить единичку в ячейке A1 / прекратить запись макроса

затем

Вкладка Вид (или Разработчик) / Макросы / ищем среди списка макрос с тем именем, с которым ранее записали, выделяем его и справа жмем кнопку «Войти» /

открывается окно VB

На панели инструментов вверху ищем вкладку Run / выбираем из списка Reset / ниже в окне с текстовым редактором VB вставляем макрос с этой статьи / жмем дискетку и выходим.

Download source
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]