На этом шаге мы рассмотрим свойства объекта VBE.
До этого мы рассматривали доступ к элементам рабочей книги и элементам управления из внешних приложений Delphi. Для полного представления о возможностях управления приложением Excel из внешних программ этого недостаточно. Объектная модель Excel позволяет управлять не только элементами создаваемых документов, но и элементами программ на встроенном языке. Для доступа к элементам программ используется объект VBE. Родительским объектом для VBE является Application (Application.VBE), a свойства и методы самого объекта VBE позволяют полностью управлять приложениями Visual Basic из внешних программ. На рисунке 1 218 шага представлена часть общей объектной модели VBE, позволяющая понять, каким образом можно получить доступ непосредственно к текстам встроенных макросов.
Объект VBE включает в себя коллекции проектов, областей программ, элементов управления и коллекцию окон редактора. Очевидно, что, используя перечисленные ссылки, можно получить доступ к элементам этих коллекций и к их свойствам. Кроме этих коллекций объект VBE включает ссылки на активные элементы этих коллекций и собственные свойства. Собственным свойством является строка, содержащая номер версии редактора. В конечном итоге нам в целях разработки эффективных приложений достаточно будет получить доступ к текстам макросов. Для того чтобы создать новые или изменить уже существующие программные модули VB, используем свойства VBE, представленные в таблице 1.
Свойство | Тип | Назначение |
---|---|---|
Version | Строка | Версия |
ActiveCodePane | Объект | Ссылка на активный модуль |
Active VBProject | Объект | Ссылка на активный проект |
ActiveWindow | Объект | Ссылка на активное окно |
CodePanes | Объект | Ссылка на коллекцию модулей |
CommandBars | Объект | Ссылка на коллекцию элементов управления |
Events.CommandBarEvents | Объект | Ссылка на объект-источник события при воздействии на элемент управления |
Events.ReferencesEvents | Объект | Ссылка на объект-источник события при добавлении или удалении ссылок |
MainWindow | Объект | Ссылка на главное окно |
VBE.SelectedVBComponent | Объект | Ссылка на выделенный элемент |
VBProjects | Объект | Ссылка на коллекцию проектов |
Windows | Объект | Ссылка на коллекцию окон |
Когда по условиям логики работы вашего приложения требуется знать версию Visual Basic Editor, можно воспользоваться свойством Version объекта VBE и получить номер версии редактора.
procedure TForm1.Button2Click(Sender: TObject); //Получение номера версии VBE var Version: String; begin Version:=E.VBE.Version; MessageBox(handle,PChar(Version),'Номер версии Visual Basic',0); end;
Результат работы этой процедуры приведен на рисунке 1.
Рис.1. Результат работы процедуры
Вот полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, CheckLst, Spin; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E: Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и его визуализация begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Получение номера версии VBE var Version: String; begin Version:=E.VBE.Version; MessageBox(handle,PChar(Version),'Номер версии Visual Basic',0); end; end.
В заключение отметим, что в некоторых случаях результат работы этого приложения может быть таким, как показано на рисунке 2.
Рис.2. Сообщение об ошибке
Это вызвано тем, что отсутствует "доверие" к проектам, использующим VBE. Для установки этого доверия нужно выполнить пункт меню Сервис | Макрос | Безопасность..., в появившемся окне переключиться на вкладку Надежные источники и установить флажок Доверять доступ к Visual Basic Project.
Рис.3. Установка флажка Доверять доступ к Visual Basic Project
На следующем шаге мы продолжим изучение этого вопроса.