Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.05 c
15-1165604393
Гоблин
2006-12-08 21:59
2006.12.31
McAffee


3-1161004920
Petrovski
2006-10-16 17:22
2006.12.31
Что за ошибка "Invalid floating point operation"


2-1165940591
Фесс
2006-12-12 19:23
2006.12.31
Сортировка жесткого диска


2-1165686682
ezorcist
2006-12-09 20:51
2006.12.31
Уничтожить TClientSocket после disconnect-а.


9-1138054512
Аццкий_рыцарь:)
2006-01-24 01:15
2006.12.31
Редактор карт в DelphiX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский