• 締切済み

ExcelからAccessの関数を使用したい

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

みんなの回答

noname#60992
noname#60992
回答No.1

・excel からADOを使って直接Accessのテーブルを見に行く。 ・Accessのファンクションをエクセルのセルに値を入れるように 書き換える。 ・Excelにアクセスのテーブルを読み込む。 などが考えられます。 実験していないのではっきりわかるわけではないのですが、 一番スムーズにことが運ぶのは excel からADOを使って直接Accessのテーブルを見に行く方法だと思います。 他の方法は、同期の問題などが起きる可能性があります。

kasai_noy
質問者

補足

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