powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Перенос формы из одной книги в другую
4 сообщений из 4, страница 1 из 1
Перенос формы из одной книги в другую
    #37054554
evggen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите кто сталкивался как можно программно перенести форму из одной книги в другую? Раньше делал так: экспортировал форму на жесткий диск, затем делал импорт в другую книгу и потом удалял сохраненную на жестком диске форму.
Такой способ мне не нравится, должен быть какой-то более красивый.
Для макросов тоже самое реализовал это следующим образом:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Sub CopyModule(ByVal SourceFullName, DestFullName, CopyModule, Optional ChangeHeader = False)
      
Dim CodeLines, iText As String
Dim ModuleToCopy As VBComponent
Dim NewModule As VBComponent
Dim CodeMod

    'копируемый модуль
    Windows(SourceFullName).Activate
    Set ModuleToCopy = Application.VBE.ActiveVBProject.VBComponents(CopyModule)

    ' извлекаем вба код из модуля
    CodeLines = ModuleToCopy.CodeModule.Lines( 1 , ModuleToCopy.CodeModule.CountOfLines)

    ' добавляем новый модуль в нужный файл
    'Workbooks.Open "C:\FileForNewModule.xls"
    Windows(DestFullName).Activate
    Set NewModule = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)

    ' вставляем вба код
    NewModule.CodeModule.AddFromString CodeLines
    ' задаем имя модуля
    NewModule.Name = ModuleToCopy.Name
    
    iText = "Option Explicit"
    Set CodeMod = ActiveWorkbook.VBProject.VBComponents(NewModule.Name).CodeModule
    
    If ChangeHeader Then
        If CodeMod.Find(iText,  3 ,  1 , CodeMod.CountOfLines,  1 ) Then
            CodeMod.InsertLines  5 , "Sub Auto_Open()"
            CodeMod.DeleteLines  6 
        Else
            CodeMod.InsertLines  3 , "Sub Auto_Open()"
            CodeMod.DeleteLines  4 
        End If
    End If
    
    ' если включен режим Option Explicit, нужно убрать дублирование строки
    If CodeMod.Find(iText,  3 ,  1 , CodeMod.CountOfLines,  1 ) Then
        CodeMod.DeleteLines  3 
    End If
End Sub

Хочется что-то подобное для формы
...
Рейтинг: 0 / 0
Перенос формы из одной книги в другую
    #37054596
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: evggen
> Раньше делал так: экспортировал форму на жесткий диск, затем делал импорт в другую книгу и потом удалял
> сохраненную на жестком диске форму.

А я всегда делаю так причем переношу не только форму, но и модули и модули классов:
Открываю оба файла(который с формой и который без формы)

Открываю редактор VBA

Нахожу в Project Explorer нужную форму и перетаскиваю её мышкой на проект в который нужно добавить
И все. У меня появляется в другой книгу копия формы.
Обращаю внимание: Все делается в Project Explorer(который вызывается по Ctrl+R) в редакторе VBA

> Подскажите кто сталкивался как можно программно перенести форму из одной книги в другую?

Никогда програмно не делал, но недавно была тема, как програмно добавить элементы на форму VBA. Поищи.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Перенос формы из одной книги в другую
    #37054609
evggen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно именно делать это программным способом. Руками понятно как это сделать :)

Просто добавление элементов, это будет муторно, так как потом еще и код под каждый создавать.
...
Рейтинг: 0 / 0
Перенос формы из одной книги в другую
    #37054622
evggen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То что я описал в первом посте (экспорт, импорт, удаление) осуществлял тоже программно.
Просто мне не нравится это способ в силу того, что некоторые антивирусники начали ругаться на мою книгу с кодом + возникают проблемы при использовании отладчика.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Перенос формы из одной книги в другую
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]