Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 05:38   #1
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию Сохранение копии книги при ее закрытии.

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

Или такого нельзя сделать - это из области фантастики.
Busine2009 вне форума
Старый 03.06.2009, 05:49   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вставьте в модуль "Эта книга" следующий код:
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim F As String: Application.DisplayAlerts = False
    F = "D:\Temp\Копия.xls" ' Путь и имя для сохранения
    ThisWorkbook.SaveAs Filename:=F
End Sub
Естественно, подставьте требуемый путь и имя файла. При повторном закрытии исходного файла, файл "Копия.xls" будет перезаписан по умолчанию.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 11.06.2009, 09:57   #3
sonych
 
Регистрация: 09.06.2009
Сообщений: 8
По умолчанию

Добрый день!
Я повесил этот код на CommandButton. Все работает. Создает копию под именем, допустим, Х. А не подскажете, как сделать так, чтобы при нажатии этой кнопки, каждый раз создавалась новая копия под новым именем, допустим, Х1, Х2, Х3 и т.д. Т.е. чтобы он не перезаписывал, а создавал именно новую копию. Это очень сложно?
спасибо заранее.
sonych вне форума
Старый 11.06.2009, 10:25   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Чтобы при нажатии кнопки, файл копировался в указанную папку с именем: "Копия + Имя_файла + дата + время", и при этом текущее имя сохраняемого файла не изменялось, "повесьте" на кнопку код:
Код:
ThisWorkbook.SaveCopyAs Filename:="D:\Temp\Копия " & ThisWorkbook.Name & "_" & Format(Now, "dd.mm.yy_hh.mm.ss") & ".xls"
Естественно, подставьте свой путь для сохранения.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 11.06.2009 в 10:28.
SAS888 вне форума
Старый 11.06.2009, 11:07   #5
sonych
 
Регистрация: 09.06.2009
Сообщений: 8
По умолчанию

спасибо большое. Поставил, но ругается на dd. Пишет - «compile error»
sonych вне форума
Старый 11.06.2009, 11:16   #6
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Попробуйте DD, хотя скорее всего дело не в этом. Внимательно посмотрите свой код на наличие ошибок и наличие папки в которую пытаетесь сохранить файл.
pivas вне форума
Старый 11.06.2009, 11:27   #7
sonych
 
Регистрация: 09.06.2009
Сообщений: 8
По умолчанию

вот он, код этот...
подскажете?

Private Sub Заказать_Click()
Dim F As String: Application.DisplayAlerts = False
F = "D:\Personal$\User\Рабочий стол\Новая папка\Заказ & dd.mm.yy_hh.mm.ss.xls" ' Путь и имя для сохранения
ThisWorkbook.SaveAs Filename:=F
End Sub
sonych вне форума
Старый 11.06.2009, 11:32   #8
pivas
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 412
По умолчанию

Попробуйте так:
Код:
"D:\Personal$\User\Рабочий стол\Новая папка\Заказ" & "_" & Format(Now, "dd.mm.yy_hh.mm.ss") & ".xls"
pivas вне форума
Старый 11.06.2009, 11:38   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во-первых, сохраненная книга будет иметь всегда одно и то же имя: "Заказ & dd.mm.yy_hh.mm.ss.xls".
Во-вторых, имя активной рабочей книги тоже изменится.
Правильно так:
Код:
Private Sub Заказать_Click()
    F$ = "D:\Personal$\User\Рабочий стол\Новая папка\Заказ " & Format(Now, "dd.mm.yy_hh.mm.ss") & ".xls"
    ThisWorkbook.SaveCopyAs Filename:=F$
End Sub
Обратите внимание: не ThisWorkbook.SaveAs..., а ThisWorkbook.SaveCopyAs...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 11.06.2009, 11:41   #10
sonych
 
Регистрация: 09.06.2009
Сообщений: 8
По умолчанию

все, спасибо большое. Победили
sonych вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автозапуск макроса при открытии и закрытии книги ruavia3 Microsoft Office Excel 8 06.04.2009 11:09
Как выполнить действие при закрытии Книги? valerij Microsoft Office Excel 9 12.03.2009 15:31
При закрытии книги, удаляются листы Romuald Microsoft Office Excel 3 20.01.2009 21:34
Как в Adobe Reader 8 отключить сохранение копии? Mikalai Софт 0 14.03.2008 14:48