Используете скомпилированный IKVM Java .dll в VBA / Excel? - PullRequest
0 голосов
/ 29 июля 2011

Я надеюсь, что смогу выполнить код из проекта Java внутри листа Excel VBA. В другом месте на SO я обнаружил IKVM, который является реализацией .NET Java, которая позволяет конвертировать .jar в .dll. Я надеялся, что это позволит мне получить доступ к классам / методам из .jar в редакторе VBA, но у меня возникают проблемы с этим.

Я пытался использовать оператор объявления в VBA (во многих различных перестановках, пытаясь заставить его работать), но наиболее распространенная ошибка относится к точкам входа в .DLL.

Я также пытался зарегистрировать .DLL в качестве ссылки в Excel, но он выдает стандартную ошибку и не регистрирует ее.

В качестве справки, я тестировал его, используя следующий класс, прежде чем пытаться протестировать его со всем проектом:

public class IKVMTest {
    public static void print(String s) {
        System.out.println(s);
    }
}

Этот класс скомпилирован Eclipse и экспортирован в IKVMTest.jar. На данный момент я использую ikvmc -target:library IKVMTest.jar для получения IKVMTest.dll. Для простоты, этот .dll и лист Excel, в котором я тестирую, выгружаются в папку bin IKVM (поскольку существуют некоторые зависимости от файлов IKVM .dll).

Если бы я мог заставить его работать для этого примера теста, я мог бы заставить его работать для всего проекта.

1 Ответ

2 голосов
/ 29 июля 2011

Вы пытались сделать свой .NET сборки COM видимым, чтобы вы могли использовать VBA для его создания?

Использование [ComVisible (true)] для класса и методов, сгенерированных кодом IKVM, может сделать его видимым как объект COM для вашего приложения VBA.

Посмотрите здесь для справки: http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute.aspx#Y1600

Также посмотрите здесь: Как вызвать сборку .net в VBA с помощью COM Interop http://blogs.msdn.com/b/smondal/archive/2009/08/31/how-to-call-a-net-assembly-in-vba-using-com-interop.aspx

...