0

我希望能够从 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 文件有一些依赖项)。

如果我能让它适用于这个示例测试,我就能让它适用于整个项目。

4

1 回答 1

2

您是否尝试过让您的 .NET 程序集 COM 可见,以便可以使用 VBA 对其进行实例化?

在由 IKVM 代码生成的类和方法上使用 [ComVisible(true)] 可能会使它作为 COM 对象对您的 VBA 应用程序可见。

看看这里以供参考:http: //msdn.microsoft.com/en-us/library/system.runtime.interopservices.comvisibleattribute.aspx#Y1600

另外,请看这里: 如何使用 COM 互操作在 VBA 中调用 .net 程序集 http://blogs.msdn.com/b/smondal/archive/2009/08/31/how-to-call-a-net -assembly-in-vba-using-com-interop.aspx

于 2011-07-29T15:41:28.563 回答