在VBA / Excel中使用IKVM编译的Java .dll

我期望能够在Excel VBA工作表内执行Java项目的代码。 在其他地方,我已经发现了IKVM,它是一个允许将.jar转换为.dll的Java的.NET实现。 我希望这可以让我访问VBA编辑器内的.jar类/方法,但是我遇到了麻烦。

我曾尝试使用VBA中的声明语句(在许多不同的排列中,试图使其工作),但最常见的错误是指.DLL中的入口点。

我也尝试在Excel中注册.DLL作为参考,但它给出了一个样板错误,并没有注册它。

作为一个参考,我已经使用下面的类对它进行了testing,然后再对整个项目进行testing:

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

这个类由Eclipse编译并导出到IKVMTest.jar中。 此时,我使用ikvmc -target:library IKVMTest.jar来接收IKVMTest.dll。 为了简单起见,我testing的这个.dll和Excel表格被转储到IKVM bin文件夹中(因为IKVM .dll文件存在一些依赖关系)。

如果我能为这个样本testing工作,我可以为整个项目做好准备。

你有没有尝试让你的.NET程序集COM可见,所以你可以使用VBA来实例化它?

对类和由IKVM代码生成的方法使用[ComVisible(true)]可能会使其作为COM对象显示给VBA应用程序。

看看这里的参考: 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式-VBA的使用-COM-interop.aspx