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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- BTOパソコン 下記の条件に合ったパソコンでオススメあれば教えてください。 ①ラップトップで持ち運び型 ②薄くて軽い 1 2023/03/02 13:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
ストアドの戻り値(配列)について
-
オブジェクト名 '<table>' が無...
-
sqlで文字列を最後に追加したい
-
ACCESS ADOでupdateが効かない
-
SQLのエラー(~付近に不適切な...
-
ACCESSで作成したアプリケーシ...
-
全ストアドを対象に文字列を置...
-
DB2でselectは出来るが、update...
-
エクセルマクロで指定範囲内の...
-
PostgreSqlでFunctionの作成に...
-
リストボックスで選択したレコ...
-
GROUP BYでエラーが発生
-
Access2000環境に対応するMid関...
-
SQLサーバー接続 特定のPCがWin...
-
SQL Server 2008 のメンテナン...
-
ユーザー定義関数内でのsp_exec...
-
Excel-VBAの「しばらくお待ちく...
-
SQLServer認証とWIndows認証
-
SQLで同じDBに対し2つのコネク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
PostgreSqlでFunctionの作成に...
-
GROUP BYでエラーが発生
-
エクセルマクロで指定範囲内の...
-
ACCESS ADOでupdateが効かない
-
ACCESSで作成したアプリケーシ...
-
sqlで文字列を最後に追加したい
-
エクセルからSQLサーバー ...
-
オブジェクト名 '<table>' が無...
-
SQLserverのIF文について
-
バッチファイルからのBCP起動に...
-
SQLServerが存在しないか、アク...
-
エクセルのグループボックス枠...
-
@@ERRORと@@ROWCOUNT併用について
-
ストアドの戻り値(配列)について
-
レポートが開けない。
-
Accessのレポートが新規作成で...
-
Access2000環境に対応するMid関...
-
自作関数を含んだクエリをエク...
おすすめ情報