我希望能够从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/

10-12 22:18
查看更多