###前提・実現したいこと
下記サイトを参考に、VBAでしようできるDLLをC#で作成しました。
C#でVBA向けの.NETライブラリ(COMコンポーネント)を作成するには?
DLLは、C#で別のアプリケーションから使用できることは検証済みです。
VBA(Excel 2013) でも使用できることは確認済みです。
ただ、ある関数が返してくる戻り値が受け取れなくて困っています。
ある戻り値は C#では DbDataReader なのですが、VBAではどうしたら受け取れるのでしょうか?
それらしきものを探したのですが、見つけられませんでした。
DLLの方でLIST型にして返すという手も考えてはいますが、
まずはVBAでそのまま DbDataReader を受け取れないのかどうか教えてほしいです。
###発生している問題・エラーメッセージ
if res.HasRows then の行で[オブジェクトが必要です]とエラーがでる
###該当のソースコード
Dim obj as new Test.Access call obj.Open dim res as Variant set res = obj.ExcuteReader("select * from hoge") if res.HasRows then 省略 end if call obj.Close
※Test.AccessはC#で作った自作のDLLを参照して使えるようにしました
###試したこと
0. 受け取る方を変えてみた
dim res as Object
set res = obj.ExcuteReader("select * hoge")
上記の行で[オブジェクトが必要です]とエラーがでてしまう。
- Select文実行するだけにしてみた
Dim obj as new Test.Access
call obj.Open
obj.ExcuteReader("select * hoge")
call obj.Close
###補足情報(言語/FW/ツール等のバージョンなど)
Test.Accessで使用できる関数は下記の通りです。
public void Open() public void Close() public DbDataReader ExcuteReader(string sql) public int ExcuteNonQuery(string sql) public DataTable Select(string sql)
回答3件
あなたの回答
tips
プレビュー