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

Вход

Регистрация

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

 

= Мир MS Excel/Клонировать форму с сохранением функционала - Мир MS Excel

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

2003
Здравствуйте! Подскажите пожалуйста, возможно ли реализовать следующую идею В файле открывается форма с объектами (кнопки,текстбоксы,комбобоксы и т.д.),которые работают с данными с листов файла. Возможно ли по нажатию кнопки эту форму клонировать с сохранением функционала, типа окон в Windows?
Спасибо!
 
Ответить
СообщениеЗдравствуйте! Подскажите пожалуйста, возможно ли реализовать следующую идею В файле открывается форма с объектами (кнопки,текстбоксы,комбобоксы и т.д.),которые работают с данными с листов файла. Возможно ли по нажатию кнопки эту форму клонировать с сохранением функционала, типа окон в Windows?
Спасибо!

Автор - pechkin
Дата добавления - 02.10.2018 в 11:01
Michael_S Дата: Вторник, 02.10.2018, 11:32 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Можно, просто перетащите ее в проект другого файла. Если нужно в том же файле, то переименуйте и перетащите обратно.
 
Ответить
СообщениеМожно, просто перетащите ее в проект другого файла. Если нужно в том же файле, то переименуйте и перетащите обратно.

Автор - Michael_S
Дата добавления - 02.10.2018 в 11:32
_Boroda_ Дата: Вторник, 02.10.2018, 12:13 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
по нажатию кнопки эту форму клонировать

Такой вариант
[vba]
Код
Sub Copy_VBA()
    Dim Proj As Object, Comp As Object
    n0_ = "UserForm1"
    n1_ = "UserForm2"
    Set Proj = ThisWorkbook.VBProject
    Set Comp = Proj.VBComponents(n0_)
    Comp.Name = n1_
    fn_ = ThisWorkbook.Path & "\" & n1_ & ".bas"
    fn1_ = ThisWorkbook.Path & "\" & n1_ & ".frx"
    Comp.Export Filename:=fn_
    Comp.Name = n0_
    Proj.VBComponents.Import Filename:=fn_
    Kill fn_
    Kill fn1_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
по нажатию кнопки эту форму клонировать

Такой вариант
[vba]
Код
Sub Copy_VBA()
    Dim Proj As Object, Comp As Object
    n0_ = "UserForm1"
    n1_ = "UserForm2"
    Set Proj = ThisWorkbook.VBProject
    Set Comp = Proj.VBComponents(n0_)
    Comp.Name = n1_
    fn_ = ThisWorkbook.Path & "\" & n1_ & ".bas"
    fn1_ = ThisWorkbook.Path & "\" & n1_ & ".frx"
    Comp.Export Filename:=fn_
    Comp.Name = n0_
    Proj.VBComponents.Import Filename:=fn_
    Kill fn_
    Kill fn1_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 02.10.2018 в 12:13
boa Дата: Вторник, 02.10.2018, 12:37 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
pechkin, можно одну и туже форму вызывать под разные нужды


 
Ответить
Сообщениеpechkin, можно одну и туже форму вызывать под разные нужды

Автор - boa
Дата добавления - 02.10.2018 в 12:37
pechkin Дата: Вторник, 02.10.2018, 12:59 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо за ответы! Прилагаю примеры. В одном как хотелось бы, но там я создал в проекте уже заранее готовые формы. Можно ли имея только одну форму заготовку открыть ее несколько раз (клонировать)? Второй пример Макрос от Boroda , но у меня не работает...
К сообщению приложен файл: 4730435.xls (40.5 Kb) · 3086002.xls (29.5 Kb)
 
Ответить
СообщениеСпасибо за ответы! Прилагаю примеры. В одном как хотелось бы, но там я создал в проекте уже заранее готовые формы. Можно ли имея только одну форму заготовку открыть ее несколько раз (клонировать)? Второй пример Макрос от Boroda , но у меня не работает...

Автор - pechkin
Дата добавления - 02.10.2018 в 12:59
_Boroda_ Дата: Вторник, 02.10.2018, 13:14 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Макрос от Boroda , но у меня не работает...

Ничего подобного, все у Вас работает. У Вас создается форма 2. Один раз. Второй раз нужно создавать форму 3
Хотите форм-кроликов? тогда так
[vba]
Код
Sub Copy_VBA()
     Dim Proj As Object, Comp As Object
     n0_ = "UserForm1"
     n1_ = "UserForm_" & Format(Now, "YY_MM_DD__hh_mm_ss")
     Set Proj = ThisWorkbook.VBProject
     Set Comp = Proj.VBComponents(n0_)
     On Error Resume Next
     Comp.Name = n1_
     If Err Then Exit Sub
     On Error GoTo 0
     fn_ = ThisWorkbook.Path & "\" & n1_ & ".bas"
     fn1_ = ThisWorkbook.Path & "\" & n1_ & ".frx"
     Comp.Export Filename:=fn_
     Comp.Name = n0_
     Proj.VBComponents.Import Filename:=fn_
     Kill fn_
     Kill fn1_
End Sub
[/vba]
К сообщению приложен файл: 3086002_1.xls (67.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Макрос от Boroda , но у меня не работает...

Ничего подобного, все у Вас работает. У Вас создается форма 2. Один раз. Второй раз нужно создавать форму 3
Хотите форм-кроликов? тогда так
[vba]
Код
Sub Copy_VBA()
     Dim Proj As Object, Comp As Object
     n0_ = "UserForm1"
     n1_ = "UserForm_" & Format(Now, "YY_MM_DD__hh_mm_ss")
     Set Proj = ThisWorkbook.VBProject
     Set Comp = Proj.VBComponents(n0_)
     On Error Resume Next
     Comp.Name = n1_
     If Err Then Exit Sub
     On Error GoTo 0
     fn_ = ThisWorkbook.Path & "\" & n1_ & ".bas"
     fn1_ = ThisWorkbook.Path & "\" & n1_ & ".frx"
     Comp.Export Filename:=fn_
     Comp.Name = n0_
     Proj.VBComponents.Import Filename:=fn_
     Kill fn_
     Kill fn1_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 02.10.2018 в 13:14
pechkin Дата: Вторник, 02.10.2018, 13:21 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Увы...
К сообщению приложен файл: 7578327.png (107.0 Kb)
 
Ответить
СообщениеУвы...

Автор - pechkin
Дата добавления - 02.10.2018 в 13:21
_Boroda_ Дата: Вторник, 02.10.2018, 13:51 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Файл - Параметры - Центр управления безопасностью (ЦУБ)- кнопка Параметры ЦУБ - Параметры макросов - стоит ли галка Предоставлять доступ к объектной модели VBA? Если нет, то поставьте


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеФайл - Параметры - Центр управления безопасностью (ЦУБ)- кнопка Параметры ЦУБ - Параметры макросов - стоит ли галка Предоставлять доступ к объектной модели VBA? Если нет, то поставьте

Автор - _Boroda_
Дата добавления - 02.10.2018 в 13:51
pechkin Дата: Вторник, 02.10.2018, 14:14 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо за терпение! Все равно ПОРЧА какая-то Перегружать пробовал и этот файл на 2007 пробовал - не хочет
К сообщению приложен файл: 1502035.png (149.3 Kb) · 8307416.png (106.9 Kb)
 
Ответить
СообщениеСпасибо за терпение! Все равно ПОРЧА какая-то Перегружать пробовал и этот файл на 2007 пробовал - не хочет

Автор - pechkin
Дата добавления - 02.10.2018 в 14:14
_Boroda_ Дата: Вторник, 02.10.2018, 14:18 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А, так у Вас 2003, я забыл.
Дома посморю, там у меня 2000, 2003, 2007, 2010 и 2013


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА, так у Вас 2003, я забыл.
Дома посморю, там у меня 2000, 2003, 2007, 2010 и 2013

Автор - _Boroda_
Дата добавления - 02.10.2018 в 14:18
RAN Дата: Вторник, 02.10.2018, 14:21 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Саш, у меня макрос в файле 3086002.xls тоже не работает.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСаш, у меня макрос в файле 3086002.xls тоже не работает.

Автор - RAN
Дата добавления - 02.10.2018 в 14:21
_Boroda_ Дата: Вторник, 02.10.2018, 14:33 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну не знаю, у меня все нормально размножается
К сообщению приложен файл: 7139544.gif (17.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу не знаю, у меня все нормально размножается

Автор - _Boroda_
Дата добавления - 02.10.2018 в 14:33
boa Дата: Вторник, 02.10.2018, 14:54 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
pechkin,
[vba]
Код
Sub SDF()

With New UserForm1
    .Label1 = "Первая форма"
    .Show
End With

With New UserForm1
    .Label1 = "Вторая форма"
    .Show
End With

With New UserForm1
    .Label1 = "Третья форма"
    .Show
End With

End Sub
[/vba]
и не надо ничего размножать
К сообщению приложен файл: 4730435_2.xls (57.5 Kb)




Сообщение отредактировал boa - Вторник, 02.10.2018, 14:54
 
Ответить
Сообщениеpechkin,
[vba]
Код
Sub SDF()

With New UserForm1
    .Label1 = "Первая форма"
    .Show
End With

With New UserForm1
    .Label1 = "Вторая форма"
    .Show
End With

With New UserForm1
    .Label1 = "Третья форма"
    .Show
End With

End Sub
[/vba]
и не надо ничего размножать

Автор - boa
Дата добавления - 02.10.2018 в 14:54
pechkin Дата: Вторник, 02.10.2018, 15:31 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо boa! Пока ничего не понял, но понравилось! Интересно-буду пробовать hands А можно их раздвинуть относительно друг друга?


Сообщение отредактировал pechkin - Вторник, 02.10.2018, 15:37
 
Ответить
СообщениеСпасибо boa! Пока ничего не понял, но понравилось! Интересно-буду пробовать hands А можно их раздвинуть относительно друг друга?

Автор - pechkin
Дата добавления - 02.10.2018 в 15:31
boa Дата: Вторник, 02.10.2018, 16:23 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
pechkin,
любые действия доступные для форм
[vba]
Код
Sub SDF()

With New UserForm1
    .Label1 = "Первая форма"
    .Left = 150
    .Top = 100
    .Show
End With

With New UserForm1
    .Label1 = "Вторая форма"
    .Left = 150 / 2 + .Width
    .Top = 100 / 2 + .Height
    .Show
End With

With New UserForm1
    .Label1 = "Третья форма"
    .Left = .Width * 2
    .Top = .Height * 2
    .Show
End With

End Sub
[/vba]
З.Ы.
Забыл упомянуть
форма не должна быть модальной и StartUpPosition = 0 - manual
К сообщению приложен файл: 4730435_3.xls (57.5 Kb)




Сообщение отредактировал boa - Вторник, 02.10.2018, 16:29
 
Ответить
Сообщениеpechkin,
любые действия доступные для форм
[vba]
Код
Sub SDF()

With New UserForm1
    .Label1 = "Первая форма"
    .Left = 150
    .Top = 100
    .Show
End With

With New UserForm1
    .Label1 = "Вторая форма"
    .Left = 150 / 2 + .Width
    .Top = 100 / 2 + .Height
    .Show
End With

With New UserForm1
    .Label1 = "Третья форма"
    .Left = .Width * 2
    .Top = .Height * 2
    .Show
End With

End Sub
[/vba]
З.Ы.
Забыл упомянуть
форма не должна быть модальной и StartUpPosition = 0 - manual

Автор - boa
Дата добавления - 02.10.2018 в 16:23
_Boroda_ Дата: Вторник, 02.10.2018, 16:32 | Сообщение № 16
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А, так Вы вот о чем!
А я Вам реально формы клонирую


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА, так Вы вот о чем!
А я Вам реально формы клонирую

Автор - _Boroda_
Дата добавления - 02.10.2018 в 16:32
RAN Дата: Вторник, 02.10.2018, 19:09 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Разобрался.
Из TMP косячит.
Нужно было файл на диск сохранить.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеРазобрался.
Из TMP косячит.
Нужно было файл на диск сохранить.

Автор - RAN
Дата добавления - 02.10.2018 в 19:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Клонировать форму с сохранением функционала
  • Страница 1 из 1
  • 1
Поиск:

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