我认为您始终需要通过COM互操作明确标记一个可用的类。这是可从VBA使用的Java类的示例:
import cli.System.Runtime.InteropServices.*;@ClassInterfaceAttribute.Annotation(ClassInterfaceType.__Enum.AutoDual)public class SampleWidget { public int Add(int x, int y) { return x + y; }}以下是编译步骤:
- 将IKVM.Runtime.dll和所有IKVM.OpenJDK。*。dll复制到当前目录或GAC中。
- 运行“ ikvmstub mscorlib”以生成mscorlib.jar。
- 创建一个名为SampleWidget.java的Java源代码,其中包含上面的代码。
- javac -cp mscorlib.jar;。SampleWidget.java
- ikvmc -out:SampleLibrary.dll SampleWidget.class -r:mscorlib.dll
- tlbexp SampleLibrary.dll
- regasm / prebase SampleLibrary.dll(此步骤需要管理员权限)
现在,您可以从VBA添加对SampleLibrary.tlb的引用,并使用SampleWidget类。



