BiVANT Книги К началу главы |
В.А. Биллиг
Средства разработки
VBA -
программиста
Офисное программирование. Том 1
"Русская редакция", 2001 г.
Глава 8(5)
Программное создание компонент проекта
В следующем примере займемся анализом компонент и ссылок проекта. При этом я не ограничусь печатью свойств компонент и ссылок, но добавлю в проект новую компоненту, создав программно новую форму:
Public Sub WorkWithVBProject()
'Компоненты и
ссылки проекта
'Dim MyProject As VBProject
Dim MyProject As Object
'Dim MyComp As VBComponent
Dim MyComp As Object
'Dim MyRef As Reference
Dim MyRef As Object
Set MyProject =
ActiveDocument.VBProject
With MyProject
'Печать
имени и типа для каждой существующей
компоненты проекта
Debug.Print "Число
компонент проекта - ", .VBComponents.Count
For Each MyComp In
.VBComponents
Debug.Print
"Имя компоненты - ", MyComp.Name, "Тип - ",
MyComp.Type
If
MyComp.Name = "NewMacros" Then MyComp.Name = "DocOneMacros"
Next MyComp
'Добавление
формы - новой компоненты проекта
.VBComponents.Add
vbext_ct_MSForm
'Печать
имени и типа для каждой существующей
компоненты проекта
Debug.Print "Число
компонент проекта - ", .VBComponents.Count
For Each MyComp In
.VBComponents
Debug.Print
"Имя компоненты - ", MyComp.Name, "Тип - ",
MyComp.Type
If
MyComp.Name = "NewMacros" Then MyComp.Name = "DocOneMacros"
Next MyComp
'Печать
имени и типа для каждой существующей ссылки
проекта
For Each MyRef In
.References
Debug.Print "Имя
ссылки -", MyRef.Name, "Тип -", MyRef.Type
Next MyRef
End With
End Sub
Приведу
результаты отладочной печати по завершении
работы этой процедуры:
Число компонент проекта
- 5
Имя компоненты -
ThisDocument Тип -
100
Имя компоненты -
Examples Тип -
1
Имя компоненты -
DocOneMacros Тип -
1
Имя компоненты -
Examples1 Тип -
1
Имя компоненты -
EventsOfApp Тип -
2
Число компонент проекта - 6
Имя компоненты -
ThisDocument Тип -
100
Имя компоненты -
Examples Тип -
1
Имя компоненты -
DocOneMacros Тип -
1
Имя компоненты -
Examples1 Тип -
1
Имя компоненты -
EventsOfApp Тип -
2
Имя компоненты -
UserForm1 Тип -
3
Имя ссылки - VBA Тип -
0
Имя ссылки - Word Тип -
0
Имя ссылки - stdole
Тип -
0
Имя ссылки - Normal
Тип -
1
Имя ссылки - Office
Тип -
0
Имя ссылки - MSForms
Тип -
0
Имя ссылки - VBIDE Тип -
0
Имя ссылки - EventSystemLib
Тип -
0
Вначале до программного добавления формы печатаются компоненты проекта. Их в проекте пять - сам документ, три стандартных модуля с именами: DocOneMacros, Examples и Examples1, модуль класса с именем EventsOfApp. После программного добавления формы повторяется печать компонент, число которых, естественно, выросло на единицу за счет добавления формы. Конечно, главным итогом работы процедуры является не столько отладочная печать, сколько появление новой формы, которую можно заполнять программно или вручную.
Приведенные примеры программной работы с проектом достаточно просты. Два более сложных примера на эту тему можно найти в моей уже упоминавшейся книге [2. стр. 442- стр. 446], где я отвечал на два вопроса одного из читателей:
· Как сохранить в форме программно добавленные элементы управления так, чтобы они появлялись при повторном ее открытии?
· Как импортировать VBComponent, если компонент с таким именем уже присутствует в программе?
При ответе на первый вопрос я, во-первых, показал, как программно добавляются в созданную форму элементы управления, во-вторых, как использовать свойство Designer для придания форме, с которой работает программист, статуса режима проектирования.