Форум: "Прочее";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c