質問: obj.ExcuteReader("select * hoge") 上記の行で[オブジェクトが必要です]とエラーがでてしまう。 2. 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) ```
回答: C#のDLL内で、DbDataReaderを保持し、そのデータにアクセスできるインターフェースを実装し、VBAからも使えるようにしました。 ``` /* C#の方 元のDbDataReaderを使うのと同じように使えるようにしました */ void bool Read(); void string GetValue(int colindex); ``` ``` 'VBA Private Sub CommandButton2_Click() 'クラスのインスタンスを生成 Dim o As New TestOracle.DbAccess '接続 o.Open 'カーソルを開く(SELECT文の実行) o.ExcuteReader ("SELECT * FROM testtable where rownum <= 10") 'データがなくなるまで繰り返す Do While o.Read debug.print o.GetValue(0) debug.print o.GetValue(1) Loop 'カーソルを閉じる Call o.CloseCursor '接続を切断する Call o.Close End Sub ```