我希望能够从Excel VBA表中的Java项目执行代码。在SO的其他地方,我发现了IKVM,它是Java的.NET实现,允许将.jar转换为.dll。我希望这可以让我从VBA编辑器中的.jar访问类/方法,但是我遇到了麻烦。
我尝试在VBA中使用declare语句(在许多不同的排列中,尝试使其工作)但最常见的错误是指.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工作表被转储到IKVM bin文件夹中(因为对IKVM .dll文件有一些依赖性)。
如果我能让它适用于此样本测试,我可以让它在整个项目中运行。
答案 0 :(得分:2)
您是否尝试过使用.NET程序集COM以便可以使用VBA实例化它?
在IKVM代码生成的类和方法上使用[ComVisible(true)]可能会使其作为VBA应用程序的COM对象可见。
另外,请看一下:如何使用COM Interop在VBA中调用.net程序集 http://blogs.msdn.com/b/smondal/archive/2009/08/31/how-to-call-a-net-assembly-in-vba-using-com-interop.aspx