3

私は.NETアプリケーション(問題がある場合はWPF)でMicrosoft Excelのインスタンスを作成しており、次のように内部に埋め込んでいます:

        var excelType = Type.GetTypeFromProgID("Excel.Application");
        var excelObj = Activator.CreateInstance(excelType);
        excelType.InvokeMember("Visible", BindingFlags.SetProperty, null, excelObj, new object[] { true }, ComCulture);
        var excelHwnd = new IntPtr((int)excelType.InvokeMember("Hwnd", BindingFlags.GetProperty, null, excelObj, new object[0], ComCulture));
        var managedWindowHwnd = new WindowInteropHelper(Application.Current.MainWindow).Handle;
        SetParent(excelHwnd, managedWindowHwnd);
        MoveWindow(excelHwnd, 0, 0, Convert.ToInt32(Width), Convert.ToInt32(Height), true);

Excel 以外のすべての機能は、インストールされているアドインをロードしません。スタート メニューから Excel を実行すると、アドインが読み込まれます。

アドインの読み込みを有効にするには、Excel にいくつかの引数を指定する必要があると思います。しかし、私は何を/どのように考えていません...

4

1 に答える 1

0

相互運用機能を使用して手動でこれを行うことができます。UDFから Excel のセル アドレスを取得して、Excel の Application オブジェクトのハンドルを取得するの記事を参照してください。アプリケーションを取得したら、application.AddIns と application.ComAddIns をループして、項目ごとに installed/connect プロパティを true に設定することにより、手動でアドインを有効にすることができます。

于 2012-04-26T06:08:28.903 に答える