.NET ライブラリは、Shampoo
クラスを COM 可視型としてエクスポートおよび登録できます。これは、VBA から としてインスタンス化できますDim sh = New Shampoo()
。同様に、他のタイプを定義することもできます。
public class Shopper()
{
public string ReadLabel(Shampoo shampoo)
{
return shampoo.Name;
}
}
そして、 aに次New Shopper()
を渡すことができますshampoo
:
Dim anne As Shopper = New Shopper()
Dim dove As Shampoo = New Shampoo()
Dim label As String
label = anne.ReadLabel(dove)
Shampoo
(Shopper.ReadLabel
上記)を使用するメソッドstatic
は、UDF などとして Excel で使用することはできません。VBA から COM 相互運用機能を介して呼び出された .NET オブジェクトのメソッドとして使用することもできません。
これまでのところ、Excel-DNAは関与していません。適切なフラグと属性を使用してコンパイルされ、マシン上の COM 相互運用用に登録された標準の .NET アセンブリを使用して、これらすべてを実行できます。
ただし、Excel-DNA では、アドインを COM サーバーにすることもできます。これは、.xll がライブラリで定義した COM クラスをホストできること、アドインが管理者アクセスを必要とせずに (インストーラーの代わりに) COM 登録を実行できること、および COM オブジェクトが同じ AppDomain に存在することを意味します。アドインの残りの部分。したがって、Excel-DNA は物事を接着するのに少し役立ちますが、VBA コードと .NET アセンブリ間の実際の相互作用は、標準の .NET から COM への相互運用であり、学習曲線を少し上がれば非常にうまく機能します。 .