dポイントプレゼントキャンペーン実施中!

MS-ACESS2000を使用しています。

自作関数を含んだアクセスのクエリをエクセルから、ADODBを使って呼び出そうと
すると・・・
=====================================
実行時エラー:'-2147217900(8004e14)'
式に未定義関数'koteityo'があります
=====================================
というエラーが発生します。

自作関数名:koteityo
モジュール名:Mdl

です。

自作関数を含んだアクセスのクエリは、アクセス上ではちゃんと動いています。エクセルに呼び出そうとすると、上記のエラーが出てしまいます。

是非とも、教えてください。

A 回答 (3件)

以下のリンク先にピッタリの記事があります。



http://www.accessclub.jp/bbs6/0020/das6169.html

では。

この回答への補足

piroin654さん

ご回答ありがとうございます。
ご紹介いただいた、
http://www.accessclub.jp/bbs6/0020/das6169.html
のページですが、すみません・・・

>1. Accessファイルの標準モジュールに、自作関数付き選択クエリを実行してレコードセットを返す関数を追加

が、ちょっと分からなかったです。(アクセスVBAが初心者なもので・・・)

「レコードセットを返す関数」って、具体的にどのようなものなのか、教えていただければ幸いです。

補足日時:2009/12/21 11:58
    • good
    • 0
この回答へのお礼

piroin654さん
回答、ありがとうございます!
仕事でつまづいていた件でした。
土日中は、休みのため試してみることができませんが、拝見したところ
”ピッタリ”
のようです。
週明けに試してみます。
取り急ぎ、御礼まで!!

お礼日時:2009/12/19 23:00

失礼しました。

訂正です。
テーブル名tblTableがSQL文の中ではtblTになっていました。どちらかに統一してください。

strSQL = "SELECT tblT.ID, tblT.氏名, tblT.年齢 FROM tblT WHERE (((cmdType([年齢]))=True));"
    • good
    • 0

pirorin654です。


Accessに計算をさせてその結果をExcelに取り込むようにExcelに関数を作るほうがはるかに
簡単だと思われます。二度手間になる気がします。例をあげてみます。

例えば、AccessのテーブルをtblTableとします。ID、氏名、年齢の各フィールドがあり、
年齢の抽出条件に自作関数cmdTypeを使用したとき、エクセルの標準モジュールに以下の
関数を貼り付けてイミディエイトウィンドウでcmdGetDataを実行してみてください。
DAOで書いているのでエクセルにDAOのチェックをしてください。
tblTableのデータは適当に。

Sub cmdGetData()

Const DB_PATH = "C:\WINDOWS\sample1.mdb" 'ファイルのパス
Dim accApp As Access.Application
Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "SELECT tblT.ID, tblT.氏名, tblT.年齢 FROM tblT WHERE (((cmdType([年齢]))=True));"
Set accApp = GetObject(DB_PATH)
Set rs = accApp.CurrentDb.OpenRecordset(strSQL)

Do Until rs.EOF
Debug.Print rs!ID, rs!氏名, rs!年齢
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
End Sub


tblTableがあるAccess側の標準モジュールに

Function cmdType(x As Integer) As Boolean
If x > 20 Then '年齢が20以上
cmdType = True
Else
cmdType = False
End If
End Function

以下を貼り付けてください。
    • good
    • 2
この回答へのお礼

piroin654さん

ありがとうございました。
おっしゃるとおり、
Excelに関数を作るほうがはるかに簡単ですね。
設計し直します!
解決できそうです。

お礼日時:2009/12/21 15:22

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

関連するカテゴリからQ&Aを探す