VB.NET2003で作成したDLLをAccessで実行

解決


クマノミ  2005-03-11 01:59:17  No: 120162

VB.NET2003で作成したDLLファイルをAccessのVBAで
実行させようとするとエラーが出てしまいます。
例えばVB.NET2003のクラスライブラリ作成で作成したクラスに

Public Class TEST
    Public Function TEST()
        MsgBox("表示")
    End Function
End Class

と記述してからメニューの
ビルド→ソリューションのビルド
でDLLを作成し、AccessのVBAで作成したフォームに

Option Compare Database
Private Declare Function TEST Lib "※DLLファイルへのパス" ()
Private Sub コマンド0_click()
    call TEST
End Sub

と記述してからフォームのボタンを押して作成したDLLを実行させようとすると、

実行エラー:453
エントリ TEST がDLLファイル "※DLLファイルへのパス"内に見つかりません

というエラーが出てしまい、DLLが実行できません。
ネットでいろいろ調べたりしましたが、全く解決できずに困り果てています。
どうかよろしくお願いします。

ちなみに開発環境は下記のとおりです。
OS:WindowsXP Pro
開発ソフト VB.NET2003
           Access2003


魔界の仮面弁士  2005-03-11 03:06:42  No: 120163

あー…… Declareで使いたいのですか。それは難しいかと。

VB.NET製DLLを Declareするのではなく、参照設定して使える「ActiveX DLL」として利用してみては如何でしょう?
http://www.sev.or.jp/ijupiter/world/dc_interrop/dotnet_com_interrop.html

どうしても Declare で運用したいとなると、VB6 や VB.NET、C# などでは、かなり特殊なことをやらないと関数のエクスポートができないようですから、DLL を別の言語(Managed C++ など)で作り直された方が早道かと。


クマノミ  2005-03-11 20:06:53  No: 120164

魔界の仮面弁士さん、アドバイスありがとうございます。
とりあえずActiveX DLLとして利用することにしてみたんですが、
DLLをレジストリに登録して、タイプライブラリを作成後にVBAから
参照することはできたんですが、実行すると

ファイルまたはアセンブリTEST、
またはその依存関係の1つが見つかりませんでした。

というエラーが出てしまい、うまく動作しません。
ちなみにDLLファイルはAccessのldbファイルがあるのと同じフォルダに保存しています。
なお、VB.NET2003の記述内容は同じで、AccessのVBAは下記のように記述しました。

Option Compare Database
Private Sub コマンド0_click()
On Error GoTo Err_Proc
    Dim obj As Test.Test
    Set obj = New Test.Test
    Call obj.Test
    Exit Sub
Err_Proc:
    MsgBox Err.Description
End Sub


クマノミ  2005-03-11 22:47:27  No: 120165

自己解決できました。
DLLファイル(今回の場合はTEST.DLL)を
Access本体の実行ファイルのあるフォルダ
※(私の場合は 「C:\Program Files\Microsoft Office\2003\OFFICE11」)
へ移動させることで無事DLLファイルの実行が可能でした。


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

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






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