0

可変数のパラメーターを取り、ParamArray を使用して VBA から呼び出すことができる関数をタイプ ライブラリで定義しようとしています。タイプ ライブラリのエントリは次のとおりです。

    [
    helpstring("Get value from a Lookup table by an exact key."),
    entry("UtilDll_LookupExact"),
    vararg
    ]
    HRESULT __stdcall LookupExact(
        [out] LPVARIANT Result, 
        [in] LPVARIANTARG Table, 
        [in] LONG VarIndex, 
        [in] SAFEARRAY(VARIANT) Key,
        [out, retval] VARIANT_BOOL *Found
        );

この VBA のオブジェクト ブラウザは次のように表示されます。

Function LookupExact(Result, Table, VarIndex As Long, ParamArray Key() As Variant) As Boolean

したがって、少なくともオブジェクト ブラウザは Key を ParmArray () Variant として認識しているようです。しかし、この関数を呼び出すと、「コンパイル エラー: 関数またはインターフェイスが制限付きとしてマークされているか、関数が Visual Basic でサポートされていないオートメーション タイプを使用しています」というコンパイル エラーが発生します。

私が見つけた最も近い質問は以下のとおりですが、ネイティブ コードを扱っている間、このケースはマネージ コードに固有のようです。 ParamArray が COM で動作しない

ParamArray パラメーターを持ち、VBA 経由でアクセスできる関数をネイティブ コードで作成するにはどうすればよいですか?

4

1 に答える 1