1

私は VBA を初めて使用し、接続オブジェクトで createQueryDef メソッドを使用すると問題が発生します。

Access にデータを表示するためだけに、SQL サーバー データベースにあるテーブルからクエリを作成しようとしています。接続を開き、createQueryDef メソッドを使用しようとしましたが、実行時エラーが発生します。

「引数の型が間違っているか、許容範囲外であるか、互いに競合しています」

コードは次のとおりです。

Sub connect()

Dim conn As ADODB.Connection
Set conn = CreateObject("ADODB.Connection")

conn.ConnectionString = "Provider=SQLOLEDB;" & _
"Data Source=MyDataSource;" & _
"User Id=MyUserID;" & _
"Password=MyPassword;" & _
"initial catalog=MyDatabase;"

conn.Properties("Prompt") = adPromptAlways

conn.Open

Dim qd As QueryDef

Set qd = conn.CreateQueryDef("test", "SELECT * FROM Mytable")

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "test", "C\MyFolder\test.xls"
rs.Close
conn.Close
Set conn = Nothing

End Sub

次のエラーが表示されます。

Set qd = conn.CreateQueryDef("test", "SELECT * FROM Mytable")

Access Table からのデータを表示する別の方法があれば、それが私が望んでいることなので、助けていただければ幸いです。

4

1 に答える 1

1

CreateQueryDefDAO.Databaseオブジェクトのメソッドです。これは、ADO 接続オブジェクトの使用可能なメソッドではありません。

Access クエリ オブジェクトを作成することが目標であり、Access セッション内から VBA を使用してこれを行う場合は、ADO を除外し、オブジェクトを使用してメソッドDAO.Databaseでクエリを作成できます。CreateQueryDef

Dim db As DAO.Database
Dim qd As QueryDef

Set db = CurrentDb
Set qd = db.CreateQueryDef("test", "SELECT * FROM Mytable")
于 2013-12-10T00:14:21.913 に答える