Как связать приложения Office 2000 с помощью VBA. На примере Outlook и Excel
Microsoft Forms 2.0
Формы UserForms в VBA — это не то же самое, что VB-формы (Ruby Forms). VBA UserForms являются экземплярами ActiveX-конструктора, входящего в состав Microsoft Forms 2.0 (FM20.dll). Последний устанавливается с помощью как VB, так и VBA. MSForms и его компоненты являются фактически элементами управления ActiveX в отличие от Ruby Forms и его компонентов. Это означает, что MSForms и его компоненты поддерживают IDispatch. Кроме того, для MSForms нет никакого различия между внешними элементами управления ActiveX (например, компонентами от сторонних поставщиков) и собственным элементом управления CommandButton. В отличие от Ruby Forms вы можете внедрять MSForms в любое приложение, поддерживающее внедрение ActiveX-конструктора. И, наконец, можно копировать элементы управления из MSForms в Ruby Forms, но не наоборот.
MSForms представляют собой надежные ActiveX-контейнеры, однако, поскольку они являются более общим вариантом по сравнению с Ruby Forms, между ними существует несколько существенных различий. Так, некоторые из элементов управления в VB не поддерживаются VBA, в числе которых: Timer, FileListBox, PictureBox, DriveListBox, DirListBox, Menu, Shape и Line. (Более того, для однотипных элементов управления используются разные имена, наборы свойств, приемы работы с ними...) Тем не менее большинство этих элементов управления доступно с помощью сторонних ActiveX-библиотек, работающих с MSForms. Кроме того, последние не поддерживают массивы элементов управления, связывание данных, меню, страницы свойств (property pages) и реализацию многодокументного интерфейса (MDI).
В VBA 5.0 MSForms обладали дополнительным ограничением на модальное поведение. Однако в VBA 6.0 (поставляемом вместе с Office 2000) вы можете установить тип формы как модальный/немодальный при помощи свойства Show Modal.