MS-ACESS2000を使用しています。
自作関数を含んだアクセスのクエリをエクセルから、ADODBを使って呼び出そうと
すると・・・
=====================================
実行時エラー:'-2147217900(8004e14)'
式に未定義関数'koteityo'があります
=====================================
というエラーが発生します。
自作関数名:koteityo
モジュール名:Mdl
です。
自作関数を含んだアクセスのクエリは、アクセス上ではちゃんと動いています。エクセルに呼び出そうとすると、上記のエラーが出てしまいます。
是非とも、教えてください。
No.1ベストアンサー
- 回答日時:
この回答への補足
piroin654さん
ご回答ありがとうございます。
ご紹介いただいた、
http://www.accessclub.jp/bbs6/0020/das6169.html
のページですが、すみません・・・
>1. Accessファイルの標準モジュールに、自作関数付き選択クエリを実行してレコードセットを返す関数を追加
が、ちょっと分からなかったです。(アクセスVBAが初心者なもので・・・)
「レコードセットを返す関数」って、具体的にどのようなものなのか、教えていただければ幸いです。
piroin654さん
回答、ありがとうございます!
仕事でつまづいていた件でした。
土日中は、休みのため試してみることができませんが、拝見したところ
”ピッタリ”
のようです。
週明けに試してみます。
取り急ぎ、御礼まで!!
No.3
- 回答日時:
失礼しました。
訂正です。テーブル名tblTableがSQL文の中ではtblTになっていました。どちらかに統一してください。
strSQL = "SELECT tblT.ID, tblT.氏名, tblT.年齢 FROM tblT WHERE (((cmdType([年齢]))=True));"
No.2
- 回答日時:
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
以下を貼り付けてください。
piroin654さん
ありがとうございました。
おっしゃるとおり、
Excelに関数を作るほうがはるかに簡単ですね。
設計し直します!
解決できそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
accessのユーザー定義関数記述について
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
バッチファイルからのBCP起動に...
-
オブジェクト名 '<table>' が無...
-
ACCESS ADOでupdateが効かない
-
SQLServerのエラー1069について
-
エクセルマクロで指定範囲内の...
-
ACCESS2000ディスクまたはネッ...
-
ORA-1036??
-
エクセルのグループボックス枠...
-
@@ERRORと@@ROWCOUNT併用について
-
アクセスでの通常のマクロの実...
-
何も表示されない実行時エラー...
-
PostgreSqlでFunctionの作成に...
-
分散トランザクションを開始で...
-
全ストアドを対象に文字列を置...
-
アクセスの質問です。
-
MySQLの不可解なエラー
-
SQLのエラー(~付近に不適切な...
-
Access2000環境に対応するMid関...
-
レポートが開けない。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
エクセルマクロで指定範囲内の...
-
バッチファイルからのBCP起動に...
-
ACCESSで作成したアプリケーシ...
-
オブジェクト名 '<table>' が無...
-
何も表示されない実行時エラー...
-
ACCESS ADOでupdateが効かない
-
ACCESS2000ディスクまたはネッ...
-
エクセルからSQLサーバー ...
-
レポートが開けない。
-
sqlで文字列を最後に追加したい
-
Access2000環境に対応するMid関...
-
エクセルのグループボックス枠...
-
ストアドの戻り値(配列)について
-
SQLServerのエラー1069について
-
Accessのレポートが新規作成で...
-
SQLserverのIF文について
おすすめ情報