Вниз
Скачать: CL | DM;

CreateObject в VBA Excell   Найти похожие ветки 

← →
isasa ©   (2006-12-14 01:09) [0]

Решил протестировать ATL Excel-ом и, к своему изумлению, уперся в вопрос на который не смог найти ответа(смотрел  в MSDN)

Есть кокласс
... (idl)
 coclass coClass
 {
   interface IIntrf1;
   [default] interface IIntrf2;
 };
...
в Дельфи
...
 TcoClass = class(TAutoFLClass, IIntrf1, IIntrf2)
...

Как мне в среде VBA создать объект coClass с интерфейсом IIntrf1.
Варианты
Set Intf = CreateObject("Server.coClass")
не помогают. Ратотает [default] interface IIntrf2.


← →
Сергей М. ©   (2006-12-14 08:24) [1]

Как в VBA объявлена Intf ?


← →
isasa ©   (2006-12-14 08:48) [2]

Как Variant


Dim  Intf
...
Set Intf = CreateObject("Server.coClass")
...

Но можно и как

Dim Intf  as Object
...

не принципиально, как надо, так и объявлю.


← →
wal ©   (2006-12-14 09:23) [3]

Код сервера можно менять?


← →
umbra ©   (2006-12-14 10:04) [4]


> Как мне в среде VBA создать объект coClass с интерфейсом
> IIntrf1.

насколько я знаю - никак


← →
isasa ©   (2006-12-14 10:44) [5]

wal ©   (14.12.06 09:23) [3]

Код сервера можно менять?


Да, свое-же. Но xls-файл надо отдавать заказчику.


← →
wal ©   (2006-12-14 10:47) [6]


> [5] isasa ©   (14.12.06 10:44)
> Да, свое-же
Сделай в дефолтном интерфейсе read-only свойсво типа IIntrf1, в Get_методе возвращай Self as IIntrf1, из скрипта обращайся Object.Property.


← →
alex_*** ©   (2006-12-14 10:50) [7]

сделай импорт .tlb и пользуй как обычный класс


← →
wal ©   (2006-12-14 10:53) [8]


> [7] alex_*** ©   (14.12.06 10:50)
Это где это такое в екселе найти можно?


← →
umbra ©   (2006-12-14 10:57) [9]

в смысле, без второго кокласса это невозможно.


← →
alex_*** ©   (2006-12-14 10:57) [10]


> Это где это такое в екселе найти можно?


в окне VBA: Tools->References. Жмешь Browse - все COM серверы и tlb твои


← →
alex_*** ©   (2006-12-14 10:59) [11]


> Как мне в среде VBA создать объект coClass с интерфейсом
> IIntrf1.

ну а по сабжу посмотри под каким именем в реестре зареген твой класс и делай CreateObject по нему


← →
isasa ©   (2006-12-14 11:17) [12]

alex_*** ©   (14.12.06 10:57) [10]
Прицепил.
Но я не вижу, кроме как птицы, в окне диалога. Как к этой ссылке обращаться?


← →
Ломброзо ©   (2006-12-14 11:18) [13]

Че-то непонятно. Кокласс имплементирует методы всех интерфейсов, так? Все интерфейсы и их методы должны быть видны через Object Browser. Посему так:

Dim pIntf1 As MyLib.Intf1
Dim pObj as New coClass
Set pIntf1 = pObj


← →
Ломброзо ©   (2006-12-14 11:20) [14]

[13] Разумеется, библиотеку нужно сперва прицепить к Excel так, как указано в [10]


← →
isasa ©   (2006-12-14 11:23) [15]

Все, спасибо, допер.

Ломброзо ©   (14.12.06 11:18) [13]

Именно так!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.029 c
15-1165695212
ddrsdrammemoty
2006-12-09 23:13
2006.12.31
Извлечение из ресурса Htmlок


15-1165502008
Kostafey
2006-12-07 17:33
2006.12.31
Delphi_Code_Library


15-1166026852
Виста
2006-12-13 19:20
2006.12.31
Кряк для Висты


3-1161331615
vvrz
2006-10-20 12:06
2006.12.31
вызов хранимой процедуры MS SQL


2-1166084082
Николай1
2006-12-14 11:14
2006.12.31
TApplicationEvents.onIdle не работает




   Наверх