visual studio2008でdllを作成し、そのdllを他のvbプロジェクトとエクセルvbaで使いたいと思います。自作のdllを使い回したいのですが、その方法が分かりません。参考になるHPなどをご存知でしたら教えてください。よろしくお願いします。


一応自分でやったことをまとめておきます。

vs2008で、プロジェクトの種類を「クラスライブラリ」にしてビルドまではしたのですが、その後どうしたらよいか分かりません。
ビルドをしたら、
\bin\Releaseの中に、ClassLibrary1.dll、ClassLibrary1.pdb、ClassLibrary1.xmlという3つのファイルができています。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/19 18:33:40
  • 終了:2011/06/22 21:34:15

回答(3件)

id:degucho No.1

degucho回答回数253ベストアンサー獲得回数672011/06/19 18:59:15

ポイント200pt

regasmを使ってレジストリに登録するとVBAの参照設定で使えるようになります

http://oshiete.goo.ne.jp/qa/4260192.html

(回答3)

http://7ujm.net/VB/VBAVBnetActiveX.html

http://point56.blogspot.com/2009/09/net-netcom.html

id:eno2i

どうもありがとうございます。

教えていただいたページを読んでみましたが、dllを使うのは、かなりレベルが高いと感じました。もっと、簡単に使えるものだと思ってました。甘かったです。

理解するのに時間がかかりそうです。

2011/06/19 21:52:21
id:SweetSmile1978 No.2

SweetSmile1978回答回数191ベストアンサー獲得回数292011/06/20 08:20:59

ポイント150pt

プロジェクトの種類が「クラスライブラリ」ということなので、

.NET で dll を作ったものと理解します。

別のVBプロジェクトからその DLL を参照するには、

その別のプロジェクトの参照設定で DLL のプロジェクトへの参照を追加し、

あとは、.NET のクラスライブラリを使用する感覚で使うだけのはずです。

VBAでの経験はないのでちょっとわかりません。

id:eno2i

どうもありがとうございます。

この方法でもできました!

2011/06/21 23:50:39
id:SweetSmile1978 No.3

SweetSmile1978回答回数191ベストアンサー獲得回数292011/06/20 16:16:40

ポイント150pt

VBAでの方法についてはマイクロソフトに記述がありました。

[HOWTO] Microsoft Office で Visual Basic for Applications から Visual Basic .NET クラス ライブラリを呼び出す方法

http://support.microsoft.com/kb/317535/ja

別の VBプロジェクト(VBAでない)からDLLを呼び出すときは先に書いたように、

DLLを使用するプロジェクトの参照設定(ソースファイルなどを管理できる場所にあります)でDLLのプロジェクトへの参照を追加するか、

DLLを直接指定すると使えるはずです。

名前空間の指定に気をつける必要があるかもしれません。

id:eno2i

どうもありがとうございます。

この方法でVBAでdllにアクセスできました!

先ほど、regasmでdllを登録したので、別プロジェクトでdllを作り直して試してみました。

dllをビルドした後、エクセルVBAの参照設定のリストに新たに作ったdllが表示されました。これは、VSが自動的にregasmをしているということなのでしょうか?

まだまだよく分からないことだらけですが、みなさんに教えていただいたことで希望の光が見えてきました。

2011/06/22 00:06:25
  • id:degucho
    Microsoftが悪いのですが、現在同じDLLといっても3種類存在します

    1.Win32 DLL
    当初はこれだけだった。現在のアンマネージドのC++やVS6までのVC,Delphiなどで作成。
    現在のVSで使うにはDLLImportを記述。VBAで使う場合はDeclareを記述

    2.ActiveX DLL
    COMの記述を利用したライブラリ。
    VS5で登場。使用時はregsvr32コマンドでレジストリに登録する。
    VBAの参照設定でずらずら出てくるもの。
    VSでは参照設定→COMのタブでチェックすると3.で利用するためのインタフェースが自動生成される。

    3.マネージドDLL
    .Net標準のライブラリ。アセンブリと呼ばれる
    VSでは参照設定で利用可能。GACと呼ばれるOS全体に登録するものと
    EXEと同じ場所に置いて利用する方法がある

    回答に書いた方法は3.に対して2.のインターフェースを自動作成する行為です。
    あまり難しく考えずにコマンド打ってしまえばいいと思います。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47169&forum=7
  • id:eno2i
    丁寧に説明いただきどうもありがとうございます。
    dllをウェブで調べるといくつも出てきて、混乱してました。とても助かります。

    コマンドを売ってしまえばいいという言葉に勇気をもらい試してみました。

    できました!

    regasmでdllを登録しないと使えないのだろうかという疑問がわきました。

    自分で調べてみて、分からなければ再度質問しようと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません