Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сохранение книги с переименованием предидущей - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение книги с переименованием предидущей
Сохранение книги с переименованием предидущей
pechkin Дата: Суббота, 20.09.2014, 14:36 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравствуйте! Очень много интересного найдено на этом замечательном форуме. И вот возникла очередная мысль(?), реализовать которую без помощи форумчан для меня не представляется возможным. На мой взгляд, этот вопрос как-бы общий, по-этому файл не приложен. Задача. Есть Книга1, в которой производятся вычисления и работают макросы. Как прописать макрос который будет выполнять следующее. При открытии Книги делать ее копию в указанное место,например, на D:\Копии\Начало.xls\ При этом активной должна оставаться Книга1. На определенном этапе работы в книге макрос должен сделать копию в ту же папку уже под другим именем , например, "Последний" Далее опять по команде сделать копию с именем "Последний" при этом уже имеющийся файл с таким именем пересохранить как "Предпоследний" и т.д. Вообщем в папке всегда находится "нетронутый" самый первый файл и два с предпоследними и последними изменениями. При этом активная всегда Книга1. Это что-то вроде резервного копирования только на определенных этапах. При копировании возможны способы ускорения работы (отключения пересчета формул и т. д. ) Спасибо!


Сообщение отредактировал pechkin - Суббота, 20.09.2014, 14:37
 
Ответить
СообщениеЗдравствуйте! Очень много интересного найдено на этом замечательном форуме. И вот возникла очередная мысль(?), реализовать которую без помощи форумчан для меня не представляется возможным. На мой взгляд, этот вопрос как-бы общий, по-этому файл не приложен. Задача. Есть Книга1, в которой производятся вычисления и работают макросы. Как прописать макрос который будет выполнять следующее. При открытии Книги делать ее копию в указанное место,например, на D:\Копии\Начало.xls\ При этом активной должна оставаться Книга1. На определенном этапе работы в книге макрос должен сделать копию в ту же папку уже под другим именем , например, "Последний" Далее опять по команде сделать копию с именем "Последний" при этом уже имеющийся файл с таким именем пересохранить как "Предпоследний" и т.д. Вообщем в папке всегда находится "нетронутый" самый первый файл и два с предпоследними и последними изменениями. При этом активная всегда Книга1. Это что-то вроде резервного копирования только на определенных этапах. При копировании возможны способы ускорения работы (отключения пересчета формул и т. д. ) Спасибо!

Автор - pechkin
Дата добавления - 20.09.2014 в 14:36
The_Prist Дата: Суббота, 20.09.2014, 14:53 | Сообщение № 2
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
pechkin, видимо SaveCopyAs и события книги Open и BeforeSave в помощь.
Чтобы определить наличие файла Последний и Предпоследний в помощь Dir(полное имя файла, 16)
Хотя сама мысль с предпоследними не ясна вообще. После сохранений 10, что должно получиться? предпредпредпредпредпредпредпредпредпредпоследний?
Или только два файла? Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.


Errare humanum est, stultum est in errore perseverare
 
Ответить
Сообщениеpechkin, видимо SaveCopyAs и события книги Open и BeforeSave в помощь.
Чтобы определить наличие файла Последний и Предпоследний в помощь Dir(полное имя файла, 16)
Хотя сама мысль с предпоследними не ясна вообще. После сохранений 10, что должно получиться? предпредпредпредпредпредпредпредпредпредпоследний?
Или только два файла? Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.

Автор - The_Prist
Дата добавления - 20.09.2014 в 14:53
pechkin Дата: Суббота, 20.09.2014, 15:50 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо за ответ,The Prist! Вы все правильно поняли. В папке не больше трех файлов.
Цитата
Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.
То, что Вы предлагаете и есть решение моей задачи только по-русски - осталось перевести это на язык VBA, а вот тут как раз и возникают проблемы....
Спасибо!
 
Ответить
СообщениеСпасибо за ответ,The Prist! Вы все правильно поняли. В папке не больше трех файлов.
Цитата
Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.
То, что Вы предлагаете и есть решение моей задачи только по-русски - осталось перевести это на язык VBA, а вот тут как раз и возникают проблемы....
Спасибо!

Автор - pechkin
Дата добавления - 20.09.2014 в 15:50
alex1248 Дата: Суббота, 20.09.2014, 18:58 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 384
Репутация: 71 ±
Замечаний: 0% ±

Excel 2007, 2010
pechkin, а у вас основа макроса есть?
Я бы с удовольствием потренировался. Вроде, ничего особо сложного быть не должно, тем более, что The_Prist уже почти всё расписал. Просто же выложить пару строчек без проверки работоспособности не получится. <_<
Хотя, возможно, уже не актуально. :)


skype alex12481632
Qiwi +79276708519


Сообщение отредактировал alex1248 - Суббота, 20.09.2014, 19:02
 
Ответить
Сообщениеpechkin, а у вас основа макроса есть?
Я бы с удовольствием потренировался. Вроде, ничего особо сложного быть не должно, тем более, что The_Prist уже почти всё расписал. Просто же выложить пару строчек без проверки работоспособности не получится. <_<
Хотя, возможно, уже не актуально. :)

Автор - alex1248
Дата добавления - 20.09.2014 в 18:58
AndreTM Дата: Суббота, 20.09.2014, 19:00 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
На скорую руку - что-то типа такого?
Учтите, что создаваемые с помощью SaveCopyAs файлы - не оказывают влияния на состояние исходного файла. Т.е. сохранение копии - не сохраняет исходного файла.
Дима ещё, наверное, напомнит о том, что надо бы делать Dir(,16)
К сообщению приложен файл: 10-13082-1-1.xls (34.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНа скорую руку - что-то типа такого?
Учтите, что создаваемые с помощью SaveCopyAs файлы - не оказывают влияния на состояние исходного файла. Т.е. сохранение копии - не сохраняет исходного файла.
Дима ещё, наверное, напомнит о том, что надо бы делать Dir(,16)

Автор - AndreTM
Дата добавления - 20.09.2014 в 19:00
Alex_ST Дата: Суббота, 20.09.2014, 22:28 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Андрей,
Dir перед началом работы для проверки наличия директории (vbDirectory=16) - это естественно. Правда, я не понял, как Дима при помощи её находит файлы? :)
А вот почему в предложенном тобой коде есть только обработка открытия, но нет сохранения? :)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Суббота, 20.09.2014, 22:38
 
Ответить
СообщениеАндрей,
Dir перед началом работы для проверки наличия директории (vbDirectory=16) - это естественно. Правда, я не понял, как Дима при помощи её находит файлы? :)
А вот почему в предложенном тобой коде есть только обработка открытия, но нет сохранения? :)

Автор - Alex_ST
Дата добавления - 20.09.2014 в 22:28
The_Prist Дата: Суббота, 20.09.2014, 23:06 | Сообщение № 7
Группа: Друзья
Ранг: Участник
Сообщений: 85
Репутация: 22 ±
Замечаний: 0% ±

2010
как Дима при помощи её находит файлы?

Элементарно:
[vba]
Код
sFile = "C:\Test.xls"
if dir(sFile,16) = "" then
     Msgbox "Файла не существует!",vbcritical
else
     Msgbox "Файл есть в папке",vbcritical
end if
[/vba]


Errare humanum est, stultum est in errore perseverare
 
Ответить
Сообщение
как Дима при помощи её находит файлы?

Элементарно:
[vba]
Код
sFile = "C:\Test.xls"
if dir(sFile,16) = "" then
     Msgbox "Файла не существует!",vbcritical
else
     Msgbox "Файл есть в папке",vbcritical
end if
[/vba]

Автор - The_Prist
Дата добавления - 20.09.2014 в 23:06
Alex_ST Дата: Суббота, 20.09.2014, 23:38 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Что-то я к ночи отупел... Читаю справку и не въезжаю :(
Разве dir(sFile,16) - это не поиск директории?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЧто-то я к ночи отупел... Читаю справку и не въезжаю :(
Разве dir(sFile,16) - это не поиск директории?

Автор - Alex_ST
Дата добавления - 20.09.2014 в 23:38
AndreTM Дата: Воскресенье, 21.09.2014, 01:23 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
не понял, как Дима при помощи её находит файлы?
Цитата
vbDirectory (16) Specifies directories or folders in addition to files with no attributes.
Т.е. файлы + каталоги с таким именем.

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


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
не понял, как Дима при помощи её находит файлы?
Цитата
vbDirectory (16) Specifies directories or folders in addition to files with no attributes.
Т.е. файлы + каталоги с таким именем.

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

Автор - AndreTM
Дата добавления - 21.09.2014 в 01:23
pechkin Дата: Воскресенье, 21.09.2014, 09:17 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравствуйте! Огромное спасибо всем за участие!.Макрос, предоставленный AndreTM соответствует задаче. Аппетит ( особенно на халяву) приходит во время еды... Что нужно изменить в коде (файл AndreTM), чтобы при повторных открытиях "основного" файла, если в папке для сохранения копий уже есть "последний" и "предпоследний" файлы, они не удалялись сразу же при открытии "основного" источника, а только после команды на сохранение копий? Проще, если "основной" файл открыли и закрыли без изменений, то в папке остаются старые две копии "последнего" и "предпоследнего" файлов. Спасибо!


Сообщение отредактировал pechkin - Воскресенье, 21.09.2014, 09:19
 
Ответить
СообщениеЗдравствуйте! Огромное спасибо всем за участие!.Макрос, предоставленный AndreTM соответствует задаче. Аппетит ( особенно на халяву) приходит во время еды... Что нужно изменить в коде (файл AndreTM), чтобы при повторных открытиях "основного" файла, если в папке для сохранения копий уже есть "последний" и "предпоследний" файлы, они не удалялись сразу же при открытии "основного" источника, а только после команды на сохранение копий? Проще, если "основной" файл открыли и закрыли без изменений, то в папке остаются старые две копии "последнего" и "предпоследнего" файлов. Спасибо!

Автор - pechkin
Дата добавления - 21.09.2014 в 09:17
AndreTM Дата: Воскресенье, 21.09.2014, 10:14 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Что нужно изменить в коде...
Не сохранять файл Init вообще :)
Сами посудите: в этом случае вам нужны три копии? - скорее всего, нет.
А "по команде" вы всегда будете иметь (в копиях) текущее состояние и предыдущее.
Так что просто отключите вызов BkFile в событии Workbook_Open...

С другой стороны (если вам все же нужна копия "исходника", но создаваемая в свой собственный момент), кто вам мешает прописать вызов BkFile...,Init в нужном вам месте вашего кода?


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
Что нужно изменить в коде...
Не сохранять файл Init вообще :)
Сами посудите: в этом случае вам нужны три копии? - скорее всего, нет.
А "по команде" вы всегда будете иметь (в копиях) текущее состояние и предыдущее.
Так что просто отключите вызов BkFile в событии Workbook_Open...

С другой стороны (если вам все же нужна копия "исходника", но создаваемая в свой собственный момент), кто вам мешает прописать вызов BkFile...,Init в нужном вам месте вашего кода?

Автор - AndreTM
Дата добавления - 21.09.2014 в 10:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение книги с переименованием предидущей
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!