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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.12.2008, 21:44   #1
Siver
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 13
По умолчанию Копирование файла-шаблона

Как можно при открытии файла-шаблона вывести сообщение с предложением не портить шаблон, а сохранить его копию(например при нажатии кнопки ОК) и издеваться над ней?
У меня уже есть
код:
Private Sub Workbook_Activate()
If ActiveWorkbook.Name = "Шаблон_Отчета.xls" Then
If MsgBox("Это ШАБЛОН отчета! Необходимо скопировать его для формирования очередного отчета. Для того чтобы сделать копию - нажмите ОК, если вы хотите редактировать шаблон - нажмите Отмена, ", vbOKCancel + vbExclamation) = vbOK Then
ActiveWorkbook.SaveAs "ОчереднойОтчетПереименовать"
End If
End If
End Sub


Проблема только в том что мне нужно чтобы при нажатии "ОК" был выбор: Куда сохранить и с каким именем.
Siver вне форума
Старый 26.12.2008, 02:03   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Наиболее простой вариант решения задачи - использовать в качестве шаблона не книгу Excel, а шаблон Excel.

То есть сохраняете свой файл в формате шаблона ( с расширением .xlt ) - и при щелчке на нём будет автоматически создаваться копия шаблона в виде книги Excel.

Ну или используйте примерно такой код:
Код:
Private Sub Workbook_Activate()
    If ActiveWorkbook.Name = "Шаблон_Отчета.xls" Then
        Request:
        If MsgBox("Это ШАБЛОН отчета! Необходимо скопировать его для формирования очередного отчета." _
                  & vbNewLine & vbNewLine & "Для того чтобы сделать копию - нажмите ОК, если вы хотите редактировать шаблон - нажмите Отмена, " _
                  , vbOKCancel + vbExclamation) = vbOK Then
            newname = GetNewFileName
            If newname = "" Then
                ' нажата кнопка ОТМЕНА в диалоговом окне сохранения
                GoTo Request
            Else
                ' выбрано или введено имя файла
                ActiveWorkbook.SaveAs newname
            End If
        End If
    End If
End Sub

Function GetNewFileName() As String
    GetNewFileName = "": InitialFileName = ThisWorkbook.FullName: NewFileExt = ".xls"
    GetNewFileName = Application.GetSaveAsFilename _
                     (InitialFileName, "Копии моего шаблона (*" & NewFileExt & "),", , "Введите имя файла для сохранения копии шаблона", "Сохранить")
    If VarType(GetNewFileName) = vbBoolean Then GetNewFileName = "": Exit Function
    If GetNewFileName = "False" Or GetNewFileName = "Ложь" Then GetNewFileName = ""
End Function
EducatedFool вне форума
Старый 26.12.2008, 03:39   #3
cent
Пользователь
 
Аватар для cent
 
Регистрация: 26.12.2008
Сообщений: 73
По умолчанию

По моему код в данном случае абсолютно излишен!

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Наиболее простой вариант решения задачи - использовать в качестве шаблона не книгу Excel, а шаблон Excel.

То есть сохраняете свой файл в формате шаблона ( с расширением .xlt ) - и при щелчке на нём будет автоматически создаваться копия шаблона в виде книги Excel.
[/CODE]
Действительно достаточно сохранить шаблонную книгу как шаблон *xlt , а при открытии ее автоматически создается новая книга.... и шаблон остается невредимым
Четко сформулированная задача - половина решения!
<= Спасибо оставляем в отзывах
cent вне форума
Старый 26.12.2008, 04:28   #4
Siver
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 13
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Наиболее простой вариант решения задачи - использовать в качестве шаблона не книгу Excel, а шаблон Excel.

То есть сохраняете свой файл в формате шаблона ( с расширением .xlt ) - и при щелчке на нём будет автоматически создаваться копия шаблона в виде книги Excel.
М-мда... про такую штуку как - .xlt я не знал. Но код мне все-равно пригодится.
Так-что спасибо за всё!
Siver вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файла Killbrum Помощь студентам 9 07.09.2009 17:09
копирование данных в новую таблицу при интерактивном выборе файла gege Microsoft Office Excel 7 22.10.2008 17:16
Копирование файла и progressbar VenMaster Компоненты Delphi 8 26.05.2008 21:44
Авто копирование файла с носителей и на носитель experts91 Общие вопросы Delphi 7 04.10.2007 17:27
Копирование имени файла greengeneral Общие вопросы Delphi 3 10.09.2007 14:11