Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
__Лекции_Корпорат_инф_системы.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
899.07 Кб
Скачать

Дополнительные элементы управления (ActiveX –объекты)

На форме Вы можете расположить не только базовые элементы управления, но и дополнительные ActiveX объекты. Для этого перейдите в редакторе VBA в форму, после чего в меню Tools Вы обнаружите пункт Additional Controls. Выберите интересующий Вас элемент управления, и он появится на панели инструментов. Как работать с этим элементом управления можно узнать из справочника, обычно поставляемого вместе с включающей его библиотекой. Достаточно много сведений вы можете найти в справочнике MSDN.

Описание программирования в vba, модели com Доступ к вставленным в документ ole-объектам

Пользователю предоставляется возможность вставки OLE-объекта двумя способами: со связью с исходным файлом и без связи. С точки зрения пользователя видимая разница заключается в том, что при активизации вставленного объекта (двойным щелчком или при выборе одного из пунктов меню «открыть», «изменить» ) либо запускается родительское приложение в отдельном окне, либо «оживает» вставленный объект в маленьком окошке внутри исходного документа.

С точки зрения программиста, пытающегося управлять внедренным объектом, разница существенная. В таблице ниже приведены сведения об организации такой связи.

OLE-объект со связью

На самом деле такой объект – просто ссылка на файл, поэтому свойство OLEFormat.Object не определено, но определено свойство LinkFormat. Поэтому получить доступ к вставленному объекту через свойство Object невозможно. Но можно, во-первых, программно активизировать вставленный объект, то есть запустить родительское приложение, и имитируя нажатия клавиатуры управлять им. Во-вторых, можно узнать имя исходного файла из свойства LinkFormat.SourceFullName, а затем, пользуясь обычным способом доступа к внешним COM-серверам (при помощи функций GetObject или CreateObject) сформировать COM-объект и модифицировать его.

‘ управление через внешний COM-объект

Dim fn as string, ob as Object

Fn= ThisDocument.InlineShapes(1).LinkFormat.SourceFullName

Set ob=GetObject(Fn)

‘ управление через буфер клавиатуры

With ThisDocument.InlineShapes(1).OLEFormat

.Activate

End With

SendKeys "{RIGHT}", True ' Get grand total.

SendKeys "{RIGHT}", True ' Get grand total.

SendKeys "{DOWN}", True ' Get grand total.

SendKeys "=A2{+}B2{ENTER}", True ' Get grand total.

SendKeys "%{F4}", True

SendKeys "{ENTER}", True

SendKeys "g:\ttt1{ENTER}{ENTER}", True

OLE-объект без связи

Это – действительно COM-объект с дополнительной информацией о родительском приложении и файле. Информация о родителях становится доступной только после активизации OLE-объекта. А через свойство Object можно перейти к внедренному объекту, далее можно работать со свойствами и методами этого объекта. Свойство ProgID – ранее обсуждаемое нами символьное имя объекта, например, "Excel.Sheet" – идентификатор вставленного Excel – объекта.

With ThisDocument.InlineShapes(1).OLEFormat

.Activate

MsgBox .Object.FullName

Set ob = .Object

End With