OLEDB を使用して説明したことを行う方法はないと思います。
次の VBA コードをテストしたところ、動作しました。
Sub odbcTest()
Dim cdb As DAO.Database, sql As String
Set cdb = CurrentDb
sql = _
"SELECT ID, LastName INTO myContacts " & _
"FROM [ODBC;Driver={SQL Server Native Client 10.0};Server=.\SQLEXPRESS;Database=myDb;Trusted_Connection=yes;].dbo.myContacts"
cdb.Execute sql, dbFailOnError
End Sub
次に、同等の OLEDB をテストしたところ (「インストール可能な ISAM が見つかりませんでした」)、同じエラーで失敗しました。
Sub oledbTest()
Dim cdb As DAO.Database, sql As String
Set cdb = CurrentDb
sql = _
"SELECT ID, LastName INTO myContacts " & _
"FROM [OLEDB;Provider=SQLNCLI10;Server=.\SQLEXPRESS;Database=myDb;Trusted_Connection=yes;].dbo.myContacts"
cdb.Execute sql, dbFailOnError
End Sub
ODBC;
ただし、角括弧内のおよびプレフィックスに注意してOLEDB;
ください。「通常の」接続を確立する場合、これらは必要ありません。次のコードは機能します...
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
...しかしODBC;
、接続文字列の先頭に句を追加すると...
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "ODBC;Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
...「[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified」で失敗します。
したがって、上記の最初のコード サンプルODBC;
のプレフィックスは、このメソッドがリンク テーブルを明示的に作成せずに ODBC データ ソースからデータを取得するための単なる Access ショートカットであることを示しています。(角かっこ内のものは、リンクされたテーブルのオブジェクトのプロパティになります。)Sub odbcTest()
FROM [ODBC;...]
.Connect
TableDef
したがって、私の知る限り、Access は ODBC リンク テーブルのみをサポートする (OLEDB リンク テーブルはサポートしない) ため、OLDEB でこの方法を使用しても機能しません。