我希望能够从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文件有一些依赖性) .
如果我可以让它为这个样本测试工作,我可以让它为整个项目工作 .
1 回答
您是否尝试使.NET程序集COM可见,以便您可以使用VBA实例化它?
在类和由IKVM代码生成的方法上使用[ComVisible(true)]可能会使其作为VBA应用程序的COM对象可见 .
看看这里参考:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute.aspx#Y1600
另外,看看这里: How to call a .net assembly in VBA using COM Interop http://blogs.msdn.com/b/smondal/archive/2009/08/31/how-to-call-a-net-assembly-in-vba-using-com-interop.aspx