プロが教えるわが家の防犯対策術!

EXCELのVBAよりACCESS上のモジュールで定義された関数(Function)
を使用したいのですが、可能でしょうか?
EXCELから引数はACCESSに対しては、引数を付けて実行できるのですが、ACCESSからEXCELへの返却値の受け取り方が分からなくて困っています。(環境はOFFICE2000です。他のバージョンなら可能?)

■EXCEL
Set objACCESS = CreateObject("Access.Application")
objACCESS.OpenCurrentDatabase ActiveWorkbook.Path & "\database.mdb"
objACCESS.Run "UserFunction", 123
Set objACCESS = Nothing

#### UserFunctionの結果が欲しい ###

■ACCESS
Public Function UserFunction(inValue)
W_SQL = "SELECT data FROM table WHERE key = " & inValue
Set DB = CurrentDb
Set RST = DB.OpenRecordset(W_SQL)
If RST.EOF Then
RST.Close
UserFunction = -1
Else
UserFunction = RST("data")
RST.Close
End If
End Sub

A 回答 (1件)

・excel からADOを使って直接Accessのテーブルを見に行く。


・Accessのファンクションをエクセルのセルに値を入れるように
書き換える。
・Excelにアクセスのテーブルを読み込む。
などが考えられます。

実験していないのではっきりわかるわけではないのですが、
一番スムーズにことが運ぶのは
excel からADOを使って直接Accessのテーブルを見に行く方法だと思います。
他の方法は、同期の問題などが起きる可能性があります。

この回答への補足

回答ありがとうございます。
今回ACCESS上に関数を作ろうとしているのは、なるべくオブジェクト間の独立性を高めたいと思っているからなので、Excel側でDB処理(ADOやDAO)をしたり、ACCESS側でExcelのセルを処理したりといった相手を意識した形にはしたくないのです。あくまでデータやクラスオブジェクトを受け渡す形で実現したいと思っています。呼び出し側がExcelに限らずVBやWordからも同じインターフェイスで使えればと思っています。

補足日時:2007/04/27 22:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!