2012-06-06 2 views
0

Мне нужно вызвать метод из сторонней сборки .NET. Объект, который я хочу, является общедоступным и помечен атрибутом ComVisible. Метод, который я хочу, является общедоступным, но принимает IRibbonControl. Итак:Вызов стороннего публичного ComVisible .Net метода из VBA

[ComVisible(true)] 
public class CustomUI : IRibbonExtensibility 

.. ..

public void SaveAs(IRibbonControl control); 

Возможно ли это, через CreateObject в VBA, например? Мне нужно создать IRBbonControl в VBA, правильно?

ответ

1

Я знаю, что это напрямую не отвечает на ваш вопрос, но если вы правильно настроите свой интерфейс с дисками и regasm, вы «должны» использовать его в VBA. Обычно я тестирую объекты COM Exposed, используя тесты VBScript на машинах.

Handling VB.NET events in VB6 code

Очевидно, что это VB.NET код, но атрибуты и т.д. просто немного другой формат для C#. (Дайте мне знать, если вам нужна дополнительная помощь в этой части)

Вы можете правильно зарегистрировать регистр объектов в реестре (либо искать ссылки на DLL, либо искать его имя класса).

Убежденный, что вы зарегистрировали DLL с помощью regasm "path to dll" /codebase /tlb Если вы не зарегистрировали TLB, я думаю, что VBA не сможет найти объект.

Из VBScript try set myobj = CreateObject("FULLREFERENCE.CLASSNAME") вам нужно поэкспериментировать, пока не получите точное имя.

Затем в коде VBA добавьте ссылку на tlb/dll в зависимости от того, как вы ее зарегистрировали.

+0

Это не мой интерфейс, она является третьей стороной. (Я только что отредактировал это в описании проблемы) – JohnZaj

0
Dim var As Office.IRibbonControl 
Set var = New Office.IRibbonControl 

создаст объект IRibbonControl

вы можете увидеть: http://www.xtremevbtalk.com/showthread.php?t=265636&highlight=iribboncontrol

+0

Если мне нужно добавить ссылку, можете ли вы сказать мне, что она называется? Код, который вы разместили как есть, не будет компилироваться: «Недопустимое использование нового ключевого слова» – JohnZaj

Смежные вопросы