0

参照型を受け入れる C# プロパティを VBA に公開することについて長時間調査した結果、それは不可能であるという結論に達しました。簡単に言うと、double[] 型の C# プロパティまたはオブジェクトでさえ、次のように VBA で使用することはできません。

' Compile Error: Function or interface marked as restricted,
' or the function uses an Automation type not supported in Visual Basic
oComExposedEarlyBinding.ObjectArray = VBArray

' Run-time error 424: Object required
oComExposedEarlyBinding.PlainObject = VBArray

または詳細については 、VBA (COM) に公開されている C# プロパティ: 実行時エラー '424': オブジェクトが必要です

C++/CLI がそのようなオプションをサポートするかどうかを知りたいですか? つまり、上記のような構文が有効になるように、参照型プロパティを VBA に公開できるようにします。

注:遅延バインディングを使用してこれを実現できますが、インテリセンスを失うことは選択肢ではありません。

4

1 に答える 1

0

これは C++/CLI で可能です。C++/CLI のプロパティは get と set の 2 つの関数で構成されており、C++/CLI では参照関数 (ポインター関数ではなく) を使用できるためです。

C# で同様の方法で公開されている同じプロパティは機能しません。

このプロパティは期待どおりに COM に公開されており、VBA での設定や取得に問題はありません。

private:
    Object ^_myProp;
public:
property Object %MyProp { 
    virtual Object %get() 
    {
        return *_myProp;
    }
    virtual void set(Object %value) 
    {
        _myProp = %value;
    }
};
于 2012-11-21T15:54:48.270 に答える