Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

XL: Резервное копирование через VBA

2.6K
05 марта 2004 года
Lev_ru
35 / / 05.03.2004
Помогите пожалуйста написать макрос для резервного копирования книги Excel. Т.е. есть книга и нужно, чтобы запустив макрос, она сохранялась в файл, в названии которого есть текущая дата и время ???
305
05 марта 2004 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Lev_ru
Помогите пожалуйста написать макрос для резервного копирования книги Excel. Т.е. есть книга и нужно, чтобы запустив макрос, она сохранялась в файл, в названии которого есть текущая дата и время ???



В ескселе это и так есть.
Нажми сохранить->Сервис->Общие параметры
и там поставь галочку "Всегда создавать резервную копию"

ИЛИ програмно

ActiveWorkbook.SaveAs Filename:= _
"C:\NAMEFILE.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

305
05 марта 2004 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Lev_ru
Помогите пожалуйста написать макрос для резервного копирования книги Excel. Т.е. есть книга и нужно, чтобы запустив макрос, она сохранялась в файл, в названии которого есть текущая дата и время ???



Если надо время и дату, то используй Time,Date

2.6K
06 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by Kashuk


В ескселе это и так есть.
Нажми сохранить->Сервис->Общие параметры
и там поставь галочку "Всегда создавать резервную копию"

ИЛИ програмно

ActiveWorkbook.SaveAs Filename:= _
"C:\NAMEFILE.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False


Спасибо за помощь!
Не могли бы Вы еще помочь?
ActiveWorkbook.SaveAs Filename:= _"C:\NAMEFILE.xls". Как сделать, чтобы вместо namefile автоматически вставлялась текущая дата. Как я понимаю, необходимо ввести некую переменную, которая была бы равна текущей дате. И вставить ее вместо namefile.xls. Но с VBA кодом у меня проблемы, я его очень мало знаю. Я только месяц назад взялся за его небольшое изучение. Литературы нет, приходится качать с сайта Microsoft примеры и выдирать куски кода для изучения.

Sub ReservSave(d?????)
d=Текущая дата??????
ActiveWorkbook.SaveAs Filename:=d, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _, CreateBackup:=False
End Sub

Помгите кто может...

305
06 марта 2004 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Lev_ru

Спасибо за помощь!
Не могли бы Вы еще помочь?
ActiveWorkbook.SaveAs Filename:= _"C:\NAMEFILE.xls". Как сделать, чтобы вместо namefile автоматически вставлялась текущая дата. Как я понимаю, необходимо ввести некую переменную, которая была бы равна текущей дате. И вставить ее вместо namefile.xls. Но с VBA кодом у меня проблемы, я его очень мало знаю. Я только месяц назад взялся за его небольшое изучение. Литературы нет, приходится качать с сайта Microsoft примеры и выдирать куски кода для изучения.

Sub ReservSave(d?????)
d=Текущая дата??????
ActiveWorkbook.SaveAs Filename:=d, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _, CreateBackup:=False
End Sub

Помгите кто может...


"d=Текущая дата??????"
d = Date + Time +".xls"

2.6K
06 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by Kashuk

"d=Текущая дата??????"
d = Date + Time +".xls"



Я извинияюсь за свою настойчивость, но ничего не получается...

Sub Test()
d = Date + Time + ".xls"
ActiveWorkbook.SaveAs Filename:=d, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub

VBA ругается на d (Type Mismatch)...

И еще вопрос: как сделать, чтобы макрос запускался в указанное время при открытии книги.

305
06 марта 2004 года
Kashuk
385 / / 21.02.2003
Цитата:
Originally posted by Lev_ru


Я извинияюсь за свою настойчивость, но ничего не получается...

Sub Test()
d = Date + Time + ".xls"
ActiveWorkbook.SaveAs Filename:=d, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub

VBA ругается на d (Type Mismatch)...

И еще вопрос: как сделать, чтобы макрос запускался в указанное время при открытии книги.



Выбери в редакторе "Эта книга"
Потом там где "General" Выбери "WorkBook" А с права выбери событие, если тебе надо его запустить при открытие, то пиши в "Open"

code:

Private Sub Workbook_Open()
.......
End Sub

2.6K
06 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by Kashuk


Выбери в редакторе "Эта книга"
Потом там где "General" Выбери "WorkBook" А с права выбери событие, если тебе надо его запустить при открытие, то пиши в "Open"

code:

Private Sub Workbook_Open()
.......
End Sub



:-? :-? :-? :-? :-? :-? :-?

1.9K
09 марта 2004 года
DKef
44 / / 11.03.2003
В общем, нужно вырезать из имени файла двоеточие, которое содержится во времени, и кроме этого когда получаешь в переменную дату и время - переводи ее в строковый тип:
d = Date
d = Str(d)
ну или проще
d=str(date)

А вот рабочий примерчик:
Sub Test()
d = Str(Date)
t = Str(Time)
hh = Mid(t, 1, 2)
mm = Mid(t, 4, 2)
ss = Mid(t, 7, 2)
t = hh & "." & mm & "." & ss

FN = d & "_" & t & ".xls"
MsgBox FN

ActiveWorkbook.SaveAs Filename:=FN, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
End Sub
1.9K
09 марта 2004 года
DKef
44 / / 11.03.2003
А если сохранение файла необходимо при открытии книги, просто присвой имени макроса

Auto_Open()
'Код для сохранения
End Sub

При открытии книги она будет сохранятся с текущей датой и временем. Вроде все... :)
Покеда!
2.6K
09 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by DKef
А если сохранение файла необходимо при открытии книги, просто присвой имени макроса

Auto_Open()
'Код для сохранения
End Sub

При открытии книги она будет сохранятся с текущей датой и временем. Вроде все... :)
Покеда!



Спасибо!

Вот прислали аналог:

Application.OnTime TimeValue("12:00:00"), "CrtBackup"

Sub CrtBackup()
strName = Application.Workbooks(1).Name
strNewName = Date$
Application.Workbooks(1).SaveAs strNewName
Application.Workbooks(1).SaveAs strName
End Sub

2.6K
11 марта 2004 года
Lev_ru
35 / / 05.03.2004
Вот то, что получилось в конечном итоге:

Sub CrtBackup()
Unload frmAsk
With Application
.DefaultFilePath = "" 'Установить текущую папку
End With
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists("BackUp") Then 'Если папки Backup нет, то создать её
fs.CreateFolder ("Backup")
End If
Application.DisplayAlerts = False 'Не отображать предупреждения
strName = Application.Workbooks(1).FullName 'Настоящее имя книги
strNewName = "BackUp\" + Date$ 'Новое имя файла книги с датой
Application.Workbooks(1).SaveAs strNewName 'Сохранить как новое название книги
Application.Workbooks(1).SaveAs strName 'Сохранить как настоящее название книги
Application.DisplayAlerts = True 'Отображать предупреждения
End Sub

В "ThisWorkbook" можно написать следующее:

Private Sub Workbook_Activate()
Application.OnTime TimeValue("12:00:00"), "CrtBackup" 'Делать резервную копию в 12 часов
Application.OnTime TimeValue("18:00:00"), "CrtBackup" 'Делать резервную копию в 18 часов
End Sub

Спасибо всем за помощь!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог