0

Excel VBA シート内で Java プロジェクトからコードを実行できるようにしたいと考えています。SO の他の場所で、.jar を .dll に変換できる Java の .NET 実装である IKVM を発見しました。これにより、VBA エディター内の .jar からクラス/メソッドにアクセスできるようになることを望んでいましたが、そうするのに問題があります。

私は VBA で宣言ステートメントを使用しようとしましたが (多くの異なる順列で、それを機能させようとしました)、最も一般的なエラーは .DLL のエントリ ポイントを参照しています。

また、.DLL を参照として Excel に登録しようとしましたが、ボイラープレート エラーが発生し、登録されません。

参考までに、プロジェクト全体でテストする前に、次のクラスを使用してテストしてきました。

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

このクラスは Eclipse によってコンパイルされ、IKVMTest.jar にエクスポートされます。この時点で、ikvmc -target:library IKVMTest.jarIKVMTest.dll を受け取るために使用します。簡単にするために、この .dll とテスト対象の Excel シートは IKVM の bin フォルダーにダンプされます (IKVM .dll ファイルにはいくつかの依存関係があるため)。

このサンプル テストで動作させることができれば、プロジェクト全体で動作させることができます。

4

1 に答える 1

2

VBA を使用してインスタンス化できるように、.NET アセンブリ COM を可視化しようとしましたか?

IKVM コードによって生成されたクラスとメソッドで [ComVisible(true)] を使用すると、VBA アプリに COM オブジェクトとして表示される場合があります。

参照用にこちらをご覧ください: 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-in-vba-using-com-interop.aspx

于 2011-07-29T15:41:28.563 に答える