コードを VSTO から ExcelDna に移動していたところ、奇妙なエラーが発生しました。
以前の VSTO 関数を含む新しいプロジェクトを Visual Studio で作成しました。VBA でこれらの関数にアクセスするために Excel VBA で参照する .tlb ファイルを生成するために、[COM 相互運用に登録する] オプションをオンにしました。
1つの関数について、エラーがあります:
「アセンブリ "C:\MyProj.dll" をタイプ ライブラリに変換できませんでした。タイプ ライブラリ エクスポータで、'GetArrayObject' の処理中にエラーが発生しました。エラー: 型が一致しません。」
Com 可視インターフェイスの関数 GetArrayObject の定義は次のとおりです。
[ComVisible(true)]
//[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IAddInUtilities
{
object[,] GetArrayObject(string[] rows = null);
}
次の定義が機能します。
object[,] GetArrayObject(string[] rows);
COM の既知の制限ですか? C++ の制限 (配列引数のデフォルト値) が原因でしょうか? COMではなくVSTOで機能する理由はありますか?
助けてくれてどうもありがとう