- PR -

VBAからC#クラスライブラリにアクセスする方法

1
投稿者投稿内容
hisuzuki
会議室デビュー日: 2006/09/20
投稿数: 6
投稿日時: 2006-09-20 20:10

VBAからC#クラスライブラリにアクセスする方法を模索しております。
以下のようなクラスライブラリをVBAから呼び出す為に

namespace Foo
{
 public class CFoo
 {
public void Show( string str )
{
   MessageBox.Show( str );
}
}

@C#でクラスライブラリ(foo.dll)を生成
AコマンドプロンプトからRegAsmにてCOMとして登録
BEXCELのVBA側でCOMの参照からfoo.dllを参照
CDim = obj CreateObject( "Foo.CFoo" )

と言った手順で処理しています。

しかし、foo.dll自体が他のC#クラスライブラリをリンクしていると
旨く動作できずCreateObjectで落ちてしまいます。

環境は
 WindowsXP SP2
VS .Net2005
.NET FRAMEWORK2.0
 Office2003(EXCEL)
なのですが何が悪いのか悩んでおります。
ご教授お願い致します。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-09-20 20:22
なんかまんまのが見つかった
HOW TO: Call a Visual Basic .NET Class Library from Visual Basic for Applications in Microsoft Office
hisuzuki
会議室デビュー日: 2006/09/20
投稿数: 6
投稿日時: 2006-09-20 20:38
ご返答有難うございます。
しかし、これは単にVBAからクラスライブラリにアクセスするだけの記事では・・・。

問題は
foo.dll自体が他のC#クラスライブラリをリンクしていると
なのです。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-09-21 12:40
その「他の C# クラスライブラリ」は foo.dll から見える場所にあるんですか?

// リンクって言われると微妙に違和感。.NET では参照(Reference)なんで。
hisuzuki
会議室デビュー日: 2006/09/20
投稿数: 6
投稿日時: 2006-09-22 13:35
確かに「リンク」ではなく「参照」ですね。

「他の C# クラスライブラリ」は foo.dll から見えてます。
test.exeからfoo.dllを実行すればキチンと動作してますので。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-09-22 16:16
引用:

foo.dll自体が他のC#クラスライブラリをリンクしている



参照しているライブラリは、.NET Frameworkのクラスライブラリ?
それとも、自作のライブラリ?

自作なら、GACに登録するか、検索できるようにしないといけないじゃなかったっけ?
http://msdn2.microsoft.com/ja-jp/library/yx7xezcf.aspx
#これは、アプリケーションの場合の話かな?

引用:

test.exeからfoo.dllを実行すればキチンと動作してますので。


自作と仮定して、
同じディレクトリ階層に置いているからでは?


クラスライブラリが参照できないなら、原因は良くわからない。です。
hisuzuki
会議室デビュー日: 2006/09/20
投稿数: 6
投稿日時: 2006-12-01 11:50
ご返答有難うございます。
しかし、これは単にVBAからクラスライブラリにアクセスするだけの記事では・・・。

問題は
foo.dll自体が他のC#クラスライブラリをリンクしていると
なのです。
1

スキルアップ/キャリアアップ(JOB@IT)