Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Перенос формы из одной книги в другую / 4 сообщений из 4, страница 1 из 1
12.01.2011, 14:45
    #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
12.01.2011, 15:05
    #37054596
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос формы из одной книги в другую
> Автор: evggen
> Раньше делал так: экспортировал форму на жесткий диск, затем делал импорт в другую книгу и потом удалял
> сохраненную на жестком диске форму.

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

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

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

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

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

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

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


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