tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルクラスライブラリ
記事No376
投稿日: 2003/08/22(Fri) 15:15
投稿者hiromi
[OSのVer]:Windows    [VBのVer]:VB.NET  
.NETで関数を作り、ACCESSでその関数を使用しようとしているのですがうまくいきません。

まずVB側ですが、.NETの[クラス ライブラリ]プロジェクトテンプレートで関数を作成しました。
ACCESS側で、参照設定でそのプロジェクト内\BIN\****.DLLを指定すると、
「指定されたファイルへの参照は登録できません。」のエラーが出てしまいます。

どこに原因があるのか、ご存知の方教えてください。

[ツリー表示へ]
タイトルRe: クラスライブラリ
記事No377
投稿日: 2003/08/22(Fri) 16:19
投稿者よねKEN
参照先http://www5b.biglobe.ne.jp/~yone-ken/
> .NETで関数を作り、ACCESSでその関数を使用しようとしているのですがうまくいきません。
>
> まずVB側ですが、.NETの[クラス ライブラリ]プロジェクトテンプレートで関数を作成しました。
> ACCESS側で、参照設定でそのプロジェクト内\BIN\****.DLLを指定すると、
> 「指定されたファイルへの参照は登録できません。」のエラーが出てしまいます。

.NETで作成したDLLは.NETのDLLであって、ActiveX DLLではありませんので、
ActiveX DLLと同じように利用するにはそれなりの手順を踏む必要があります。

下記のURL等を参考にして下さい。

hhttp://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/cpguide/html/cpconpackagingassemblyforcom.asp

hhttp://ja.gotdotnet.com/quickstart/howto/doc/Interop/Building_Samples_COM2NET.aspx

[ツリー表示へ]
タイトルRe^2: クラスライブラリ
記事No378
投稿日: 2003/08/25(Mon) 11:44
投稿者hiromi
[OSのVer]:Windows 2000   [VBのVer]:VB.NET 2002 ACADEMIC版 
よねKENさん、ありがとうございます。

お礼が遅くなってすみません。教えていただいたURLを読み、完成したらお礼を申し上げようと思いまし
たが、い
まだ出来ずじまいです。

そのURL内で「ActiveX DLL の作成」のページをみつけましたが、その手順どうりに行おうとしたところ

最初の「[新しいプロジェクト] ダイアログ ボックスの [ActiveX DLL] アイコンをダブルクリックしま
す。」
の部分で、[ActiveX DLL]アイコンがないことに気が付きました。
もしかしたらAcademic版にはその機能がないのかもしれません。

VBで作成した関数をACCESSで使用する方法はActiveXDLLを作成する以外に方法はありませんか

[ツリー表示へ]
タイトルもう解決済かもしれませんが
記事No393
投稿日: 2003/08/29(Fri) 19:46
投稿者MATCH
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:Windows    [VBのVer]:VB.NET  
> .NETで関数を作り、ACCESSでその関数を使用しようとしているのですがうまくいきません。
>
> まずVB側ですが、.NETの[クラス ライブラリ]プロジェクトテンプレートで関数を作成しました。
> ACCESS側で、参照設定でそのプロジェクト内\BIN\****.DLLを指定すると、
> 「指定されたファイルへの参照は登録できません。」のエラーが出てしまいます。
>
> どこに原因があるのか、ご存知の方教えてください。

 新規プロジェクトでクラスライブラリ
を作成し、最初に自動作成されるクラスを
削除し、ソリューションエクスプローラで
プロジェクトを右クリック→新しい項目の追加
でCOMクラスを選択し、以下のようにメソッドを作成
しました。

' 作成可能な COM クラスには、パラメータなしの Public Sub New() を指定しなければ
' なりません。これを行わないと、クラスは COM レジストリに登録されず、
' CreateObject 経由で
' 作成できません。
Public Sub New()
    MyBase.New()
End Sub

Public Function aaa() <---作成したメソッド部分
    Return "xxx" <--------作成したメソッド部分
End Function <------------作成したメソッド部分

End Class

その後ソリューションをビルドして、
Accessから以下をやってみると
VB.NETで作成したメソッドが動いたのですが・・・

Dim a As Object
Set a = CreateObject("プロジェクト名.クラス名")
MsgBox a.aaa

こういう意味ではなかったですか?
なぜ、レジストリ登録もしないのに
動くのか不思議ですが・・・

[ツリー表示へ]
タイトルまだ解決していません(T_T)
記事No395
投稿日: 2003/08/31(Sun) 12:17
投稿者hiromi
[OSのVer]:Windows    [VBのVer]:VB.NET  

MATCHさん、どうもありがとうございます。

おっしゃる通りにやってみましたが、ACCESS実行時に、
Set a = CreateObject("プロジェクト名.クラス名")
の部分で、「オートメーションエラーです。」というメッセージが出てしまいます。
まったく同じにやったつもりなのですが・・・

ちなみにプロジェクト名は、test1  クラス名は、ComClass1 で作成し、
Set a = CreateObject("test1.ComClass1") としました。

他に何か必要な設定はありますか?
すみませんが、よろしくお願いします。

[ツリー表示へ]
タイトルRe: まだ解決していません(T_T)
記事No398
投稿日: 2003/09/01(Mon) 10:30
投稿者MATCH
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:Windows    [VBのVer]:VB.NET  
>
> MATCHさん、どうもありがとうございます。
>
> おっしゃる通りにやってみましたが、ACCESS実行時に、
> Set a = CreateObject("プロジェクト名.クラス名")
> の部分で、「オートメーションエラーです。」というメッセージが出てしまいます。
> まったく同じにやったつもりなのですが・・・
>
> ちなみにプロジェクト名は、test1  クラス名は、ComClass1 で作成し、
> Set a = CreateObject("test1.ComClass1") としました。
>
> 他に何か必要な設定はありますか?
> すみませんが、よろしくお願いします。

OSの問題かな
WindowsOSは何を使っているのですか?
私が試験したのは以下の環境です。

1 Win2000Pro(sp4)でVS.NET2002&Access2002
2 WinXP(sp1a)でVS.NET2003&Access2003(beta2)

上記、以外の組み合わせなら分かりませんが、
セットアッププロジェクトを別に作成して、
セットアップからやってみてはいかがでしょう?

[ツリー表示へ]
タイトル出来ました!!!
記事No404
投稿日: 2003/09/02(Tue) 10:25
投稿者hiromi
> セットアッププロジェクトを別に作成して、
> セットアップからやってみてはいかがでしょう?

セットアップを忘れてました。(#^o^#)
すみません。基本的なことがぬけていてお騒がせしました。
でも、出来上がって感激です。ありがとうございました。

[ツリー表示へ]