Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: 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 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
3-1161124642
ArchValentin
2006-10-18 02:37
2006.12.31
очередной глупый вопрос связанный с датами


3-1160987270
Merko2005
2006-10-16 12:27
2006.12.31
Процедура сохранения


2-1165616226
XfroSt
2006-12-09 01:17
2006.12.31
Как установить курсор в нужное место в МЕМО (строка,символ) ?


15-1165617159
default
2006-12-09 01:32
2006.12.31
Кто как расслабляется на работе?


15-1164994284
Cyrax
2006-12-01 20:31
2006.12.31
Оптимальный стиль программирования