Главная страница
    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
Время: 1.422 c
15-1165499005
Andre_s
2006-12-07 16:43
2006.12.31
Win XP


2-1165772153
lobach
2006-12-10 20:35
2006.12.31
Как отследить запуск приложения?


2-1165761037
Iamdanil.yalta
2006-12-10 17:30
2006.12.31
Компиляция Delphi 7


15-1165600933
Piter
2006-12-08 21:02
2006.12.31
Использование "пустых" try .. except


2-1166018394
alex810
2006-12-13 16:59
2006.12.31
UML в Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский