VB.Net2005からEXCEL2000で利用できるCOMを作成するには?


怠け者  2006-11-07 07:08:34  No: 97126

VB.Net2005で作成したクラスをEXCEL2000を利用して、チェーンアップしたいと考えています。VBからEXCELを操作することで一応可能ですが、パフォーマンスが悪いため、EXCEL VBAからコールしたいと考えています。
しかし、作成したクラスをCOMにする方法がわからず、悩んでおります。
なお、利用しているVB.NetがExpress版のため、COMクラステンプレートがなく、そのため、手動にて作成しなくてはなりません。
テンプレートを提供いただければ解決するかもしれませんが、どうかよろしくお願いします。


Blue  2006-11-07 09:32:07  No: 97127

ここら辺参考になりませんかね。

VB.NETのクラスライブラリをExcelで使用するには?
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200603/06030045.txt

VBAからC#作成のDLLを呼び出したい
http://vsug.jp/tabid/63/forumid/53/postid/2604/view/topic/Default.aspx


怠け者  2006-11-07 21:00:19  No: 97128

返信ありがとうございます。早速、以下を参考に試してみました。

http://www.sev.or.jp/ijupiter/world/dc_interrop/dotnet_com_interrop.html

結果はEXCELでは、「オートメーションエラーです。既に存在するファイルを作成することはできません。」とのメッセージが発生し、うまくいきませんでした。VB6では、期待したとおりの結果となり、うまくいきました。
この差はどこから生じたのででしょうか?

なお、EXCELでの試験ソースを載せておきます。

Private Sub CommandButton1_Click()
    Dim clsTest As ComTest2.MyComCal  ← 自作のCOMクラス
    Dim nNum As Long
On Error GoTo Err_Test
    
    Set clsTest = New ComTest2.MyComCal  ← ここでオートメーションエラー
    
    Call clsTest.SetVal(3, 4)
    nNum = clsTest.Add()
    
    MsgBox "Result : nNum = " & Format(nNum, "0")

    Set clsTest = Nothing
    
    Exit Sub

Err_Test:
    MsgBox Err.Description

End Sub

VB6での試したソースもほぼ同じです。


Blue  2006-11-07 22:42:49  No: 97129

やはり、Excelでは
>VBAからC#作成のDLLを呼び出したい
>http://vsug.jp/tabid/63/forumid/53/postid/2604/view/topic/Default.aspx
のスレにもあるように、VS2005のクラスライブラリは使えないということでしょうかね?

私では力になれそうもないです。すみません。


オショウ  2006-11-08 03:01:24  No: 97130

VB.NET 2005 で、COMラッパを作成し、.NET クラスモジュールを呼び出す
よう正しくできれば、問題なく動作すると思います。

たまたま、VB6から呼び出すCOMラッパを製作していましたので、Excelの
VBAで呼び出すように変更したら問題なく動作しました。

Expressでは、確かにCOMクラスのテンプレートが無いですが、コンパイル
は正しく通ると思いますので・・・

以上。


怠け者  2006-11-08 06:53:02  No: 97131

不勉強で大変申し訳ございませんが、「COMラッパ」とは何ですか?

それから、VB6ではうまく言っているとのことですが、うまくいった方式を詳細に知りたいので、よろしければ、見本をいただければありがたいのですが。


オショウ  2006-11-08 07:40:56  No: 97132

http://msdn2.microsoft.com/ja-jp/library/zsfww439(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/5dxz80y2(VS.80).aspx

この辺をお読み下さい。

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加