Шаг 217.
Автоматизация Microsoft Excel. Программирование свойств MS Excel.
Использование Visual Basic Editor

    На этом шаге мы рассмотрим свойства объекта VBE.

    До этого мы рассматривали доступ к элементам рабочей книги и элементам управления из внешних приложений Delphi. Для полного представления о возможностях управления приложением Excel из внешних программ этого недостаточно. Объектная модель Excel позволяет управлять не только элементами создаваемых документов, но и элементами программ на встроенном языке. Для доступа к элементам программ используется объект VBE. Родительским объектом для VBE является Application (Application.VBE), a свойства и методы самого объекта VBE позволяют полностью управлять приложениями Visual Basic из внешних программ. На рисунке 1 218 шага представлена часть общей объектной модели VBE, позволяющая понять, каким образом можно получить доступ непосредственно к текстам встроенных макросов.

    Объект VBE включает в себя коллекции проектов, областей программ, элементов управления и коллекцию окон редактора. Очевидно, что, используя перечисленные ссылки, можно получить доступ к элементам этих коллекций и к их свойствам. Кроме этих коллекций объект VBE включает ссылки на активные элементы этих коллекций и собственные свойства. Собственным свойством является строка, содержащая номер версии редактора. В конечном итоге нам в целях разработки эффективных приложений достаточно будет получить доступ к текстам макросов. Для того чтобы создать новые или изменить уже существующие программные модули VB, используем свойства VBE, представленные в таблице 1.

Таблица 1. Свойства объекта VBE
Свойство Тип Назначение
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.
Текст этого приложения можно взять здесь (5,5 Кб).

    В заключение отметим, что в некоторых случаях результат работы этого приложения может быть таким, как показано на рисунке 2.


Рис.2. Сообщение об ошибке

    Это вызвано тем, что отсутствует "доверие" к проектам, использующим VBE. Для установки этого доверия нужно выполнить пункт меню Сервис | Макрос | Безопасность..., в появившемся окне переключиться на вкладку Надежные источники и установить флажок Доверять доступ к Visual Basic Project.


Рис.3. Установка флажка Доверять доступ к Visual Basic Project

    На следующем шаге мы продолжим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг