我希望能够从Excel VBA工作表中的Java项目执行代码。在SO的其他地方,我发现了IKVM,它是Java的.NET实现,可以将.jar转换为.dll。我希望这可以让我从VBA编辑器中的.jar中访问类/方法,但是这样做很麻烦。
我曾尝试在VBA中使用clarify语句(在许多不同的排列中,尝试使其工作),但最常见的错误是指.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文件存在某些依赖性)。如果我可以将其用于此示例测试,则可以使其整体上适用于项目。
最佳答案
您是否尝试过使.NET程序集COM可见,以便可以使用VBA对其进行实例化?
在IKVM代码生成的类和方法上使用[ComVisible(true)]可能会使它作为VBA应用程序的COM对象可见。
在这里看看以供参考:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute.aspx#Y1600
另外,在这里看看:如何使用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
关于java - 在VBA/Excel中使用IKVM编译的Java .dll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6875484/