Здравствуйте! Очень много интересного найдено на этом замечательном форуме. И вот возникла очередная мысль(?), реализовать которую без помощи форумчан для меня не представляется возможным. На мой взгляд, этот вопрос как-бы общий, по-этому файл не приложен. Задача. Есть Книга1, в которой производятся вычисления и работают макросы. Как прописать макрос который будет выполнять следующее. При открытии Книги делать ее копию в указанное место,например, на D:\Копии\Начало.xls\ При этом активной должна оставаться Книга1. На определенном этапе работы в книге макрос должен сделать копию в ту же папку уже под другим именем , например, "Последний" Далее опять по команде сделать копию с именем "Последний" при этом уже имеющийся файл с таким именем пересохранить как "Предпоследний" и т.д. Вообщем в папке всегда находится "нетронутый" самый первый файл и два с предпоследними и последними изменениями. При этом активная всегда Книга1. Это что-то вроде резервного копирования только на определенных этапах. При копировании возможны способы ускорения работы (отключения пересчета формул и т. д. ) Спасибо!
Здравствуйте! Очень много интересного найдено на этом замечательном форуме. И вот возникла очередная мысль(?), реализовать которую без помощи форумчан для меня не представляется возможным. На мой взгляд, этот вопрос как-бы общий, по-этому файл не приложен. Задача. Есть Книга1, в которой производятся вычисления и работают макросы. Как прописать макрос который будет выполнять следующее. При открытии Книги делать ее копию в указанное место,например, на D:\Копии\Начало.xls\ При этом активной должна оставаться Книга1. На определенном этапе работы в книге макрос должен сделать копию в ту же папку уже под другим именем , например, "Последний" Далее опять по команде сделать копию с именем "Последний" при этом уже имеющийся файл с таким именем пересохранить как "Предпоследний" и т.д. Вообщем в папке всегда находится "нетронутый" самый первый файл и два с предпоследними и последними изменениями. При этом активная всегда Книга1. Это что-то вроде резервного копирования только на определенных этапах. При копировании возможны способы ускорения работы (отключения пересчета формул и т. д. ) Спасибо!pechkin
Сообщение отредактировал pechkin - Суббота, 20.09.2014, 14:37
pechkin, видимо SaveCopyAs и события книги Open и BeforeSave в помощь. Чтобы определить наличие файла Последний и Предпоследний в помощь Dir(полное имя файла, 16) Хотя сама мысль с предпоследними не ясна вообще. После сохранений 10, что должно получиться? предпредпредпредпредпредпредпредпредпредпоследний? Или только два файла? Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.
pechkin, видимо SaveCopyAs и события книги Open и BeforeSave в помощь. Чтобы определить наличие файла Последний и Предпоследний в помощь Dir(полное имя файла, 16) Хотя сама мысль с предпоследними не ясна вообще. После сохранений 10, что должно получиться? предпредпредпредпредпредпредпредпредпредпоследний? Или только два файла? Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.The_Prist
Errare humanum est, stultum est in errore perseverare
Спасибо за ответ,The Prist! Вы все правильно поняли. В папке не больше трех файлов.
Цитата
Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.
То, что Вы предлагаете и есть решение моей задачи только по-русски - осталось перевести это на язык VBA, а вот тут как раз и возникают проблемы.... Спасибо!
Спасибо за ответ,The Prist! Вы все правильно поняли. В папке не больше трех файлов.
Цитата
Тогда проверять, если Предпоследний - удалять его, если он есть. Переименовывать Последний в Предпоследний и сохранять копию файла под именем Последний.
То, что Вы предлагаете и есть решение моей задачи только по-русски - осталось перевести это на язык VBA, а вот тут как раз и возникают проблемы.... Спасибо!pechkin
pechkin, а у вас основа макроса есть? Я бы с удовольствием потренировался. Вроде, ничего особо сложного быть не должно, тем более, что The_Prist уже почти всё расписал. Просто же выложить пару строчек без проверки работоспособности не получится. Хотя, возможно, уже не актуально.
pechkin, а у вас основа макроса есть? Я бы с удовольствием потренировался. Вроде, ничего особо сложного быть не должно, тем более, что The_Prist уже почти всё расписал. Просто же выложить пару строчек без проверки работоспособности не получится. Хотя, возможно, уже не актуально. alex1248
skype alex12481632 Qiwi +79276708519
Сообщение отредактировал alex1248 - Суббота, 20.09.2014, 19:02
На скорую руку - что-то типа такого? Учтите, что создаваемые с помощью SaveCopyAs файлы - не оказывают влияния на состояние исходного файла. Т.е. сохранение копии - не сохраняет исходного файла. Дима ещё, наверное, напомнит о том, что надо бы делать Dir(,16)
На скорую руку - что-то типа такого? Учтите, что создаваемые с помощью SaveCopyAs файлы - не оказывают влияния на состояние исходного файла. Т.е. сохранение копии - не сохраняет исходного файла. Дима ещё, наверное, напомнит о том, что надо бы делать Dir(,16)AndreTM
Андрей, Dir перед началом работы для проверки наличия директории (vbDirectory=16) - это естественно. Правда, я не понял, как Дима при помощи её находит файлы? А вот почему в предложенном тобой коде есть только обработка открытия, но нет сохранения?
Андрей, Dir перед началом работы для проверки наличия директории (vbDirectory=16) - это естественно. Правда, я не понял, как Дима при помощи её находит файлы? А вот почему в предложенном тобой коде есть только обработка открытия, но нет сохранения? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Суббота, 20.09.2014, 22:38
Здравствуйте! Огромное спасибо всем за участие!.Макрос, предоставленный AndreTM соответствует задаче. Аппетит ( особенно на халяву) приходит во время еды... Что нужно изменить в коде (файл AndreTM), чтобы при повторных открытиях "основного" файла, если в папке для сохранения копий уже есть "последний" и "предпоследний" файлы, они не удалялись сразу же при открытии "основного" источника, а только после команды на сохранение копий? Проще, если "основной" файл открыли и закрыли без изменений, то в папке остаются старые две копии "последнего" и "предпоследнего" файлов. Спасибо!
Здравствуйте! Огромное спасибо всем за участие!.Макрос, предоставленный AndreTM соответствует задаче. Аппетит ( особенно на халяву) приходит во время еды... Что нужно изменить в коде (файл AndreTM), чтобы при повторных открытиях "основного" файла, если в папке для сохранения копий уже есть "последний" и "предпоследний" файлы, они не удалялись сразу же при открытии "основного" источника, а только после команды на сохранение копий? Проще, если "основной" файл открыли и закрыли без изменений, то в папке остаются старые две копии "последнего" и "предпоследнего" файлов. Спасибо!pechkin
Сообщение отредактировал pechkin - Воскресенье, 21.09.2014, 09:19
Не сохранять файл Init вообще Сами посудите: в этом случае вам нужны три копии? - скорее всего, нет. А "по команде" вы всегда будете иметь (в копиях) текущее состояние и предыдущее. Так что просто отключите вызов BkFile в событии Workbook_Open...
С другой стороны (если вам все же нужна копия "исходника", но создаваемая в свой собственный момент), кто вам мешает прописать вызов BkFile...,Init в нужном вам месте вашего кода?
Не сохранять файл Init вообще Сами посудите: в этом случае вам нужны три копии? - скорее всего, нет. А "по команде" вы всегда будете иметь (в копиях) текущее состояние и предыдущее. Так что просто отключите вызов BkFile в событии Workbook_Open...
С другой стороны (если вам все же нужна копия "исходника", но создаваемая в свой собственный момент), кто вам мешает прописать вызов BkFile...,Init в нужном вам месте вашего кода?AndreTM