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 для придания форме, с которой работает программист, статуса режима проектирования.

     Назад                                             Вперед

Hosted by uCoz