Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA/Excel中使用IKVM编译的Java.dll?_Java_Excel_Vba_Dll_Ikvm - Fatal编程技术网

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

在VBA/Excel中使用IKVM编译的Java.dll?,java,excel,vba,dll,ikvm,Java,Excel,Vba,Dll,Ikvm,我希望能够在Excel VBA工作表中执行Java项目中的代码。在其他地方,我发现了IKVM,它是Java的.NET实现,允许将.jar转换为.dll。我希望这可以让我从VBA编辑器中的.jar访问类/方法,但我在这样做时遇到了麻烦 我曾尝试在VBA中使用declare语句(在许多不同的排列中,试图使其工作),但最常见的错误是指.DLL中的入口点 我还尝试将.DLL注册为Excel中的引用,但它给出了一个样板错误,并且没有注册它 作为参考,在费心对整个项目进行测试之前,我一直在使用以下类对其进行

我希望能够在Excel VBA工作表中执行Java项目中的代码。在其他地方,我发现了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文件)


如果我可以让它在这个示例测试中工作,那么我可以让它在整个项目中工作。

您是否尝试过使.NET程序集COM可见,以便可以使用VBA来实例化它

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

请查看此处以供参考:

另外,请看这里:如何使用COM互操作在VBA中调用.net程序集

问题,当我浏览您提供的两个链接时:使用ComVisible(true)是我将应用于VBA类的一种方法,对吗?这是否意味着我需要在VBA中为我想要引用的所有Java类创建一个包装类?不,comvisible需要应用于.NET程序集。使用从jar生成dll的IKVM,您将需要更新这些dll以包含comvisible或使用实用程序exe,以便使其对VBA项目可见。我在这里发布了一个示例: