○.netのDLLをCOMとして登録して使用する
ファイル名 : ClassLibrary1.DLL
Visual Studio .NET コマンド プロンプトを開いて
C:\>regasm ClassLibrary1.dll /tlb /codebase
を実行することにより
@.tlbの生成、登録
ACOM相互運用のためのレジストリ登録
が行われます。
もちろんCOMになりますから、VB6やVBAなどで呼び出せます
登録を解除するには
C:\>regasm ClassLibrary1.dll /unregister
○開発環境(VS2003)にて.netのクラスを登録してVBAにて使用する
■VB.net 2003にて作成されたActiveXコントロール
1、プロジェクト→クラスライブラリにて新規作成
2、プロジェクトのプロパティのBuildにて Register for COM Interrap にチェックを入れる
3、以上でビルドするとレジストリにActiveXとして登録される
VB6のようにGUIDが毎回変わったりしないので便利
プロジェクト名 : aClassLibrary1
クラス名 : Class1
Public Class Class1
Public Function addInteger(ByVal a As Int16, ByVal b As Int16) As Int16
Return a + b
End Function
Public Function addLong(ByVal a As Int32, ByVal b As Int32) As Int32
Return a + b
End Function
Public Function addDouble(ByVal a As Double, ByVal b As Double) As Double
Return a + b
End Function
Public Function addString(ByVal a As String, ByVal b As String) As String
Return a + b + ":.net てすと"
End Function
End Class
■VBAでの呼び出し
ActiveXコントロールを参照設定にて参照します
Public obj As New aClassLibrary1.Class1
Public Function test()
Dim i As Integer
i = obj.addInteger(10, 20)
Dim l As Long
l = obj.addLong(20, 30)
Dim d As Double
d = obj.addDouble(0.01, 1.1)
Dim s As String
s = obj.addString("いなば", "test")
End Function