Für den angeforderten Vorgang ist ein OLE DB-Sitzungsobjekt erforderlich. - Herstellen einer Verbindung zwischen Excel und SQL Server über ADO

Ich versuche, Excel 2003 zu verwenden und es mit SQL Server 2000 zu verbinden, um einige dynamisch generierte SQL-Abfragen auszuführen, die letztendlich bestimmte Zellen füllen.

Ich versuche dies über VBA über ADO zu tun (ich habe 2.8 bis 2.0 ausprobiert), aber ich erhalte eine Fehlermeldung beim Einstellen derActiveConnection Variable, die in der istADODB.Connection Objekt. Ich muss das ziemlich schnell lösen ...

Für den angeforderten Vorgang ist ein OLE DB-Sitzungsobjekt erforderlich, das vom aktuellen Anbieter nicht unterstützt wird.

Ich bin mir ehrlich gesagt nicht sicher, was dieser Fehler bedeutet und im Moment ist mir das egal.Wie kann diese Verbindung erfolgreich hergestellt werden, damit ich meine Abfragen ausführen kann?

Hier ist mein VB-Code:

Dim SQL As String, RetValue As String
SQL = " select top 1 DateTimeValue from SrcTable where x='value' " 'Not the real SQL
RetValue = ""


Dim RS As ADODB.Recordset
Dim Con As New ADODB.Connection
Dim Cmd As New ADODB.Command

Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data Source=Server\Instance;Initial Catalog=MyDB_DC;User Id=<UserName>;Password=<Password>;"
Con.CommandTimeout = (60 * 30)


Set Cmd.ActiveConnection = Con   ''Error occurs here.

' I'm not sure if the rest is right. I've just coded it. Can't get past the line above.
Cmd.CommandText = SQL
Cmd.CommandType = adCmdText

Con.Open
Set RS = Cmd.Execute()

If Not RS.EOF Then

    RetValue = RS(0).Value
    Debug.Print "RetValue is: " & RetValue

End If
Con.Close

Ich stelle mir vor, dass etwas mit der Verbindungszeichenfolge nicht stimmt, aber ich habe über ein Dutzend Variationen ausprobiert. Jetzt schieße ich nur noch im Dunkeln ....

Hinweis / Update: Um die Sache noch verwirrender zu machen, wenn ich nach dem obigen Fehlerzitat google, bekomme ich viele Treffer zurück, aber nichts scheint relevant zu sein oder ich bin mir nicht sicher, welche Informationen relevant sind ...

Ich habe den VBA-Code in "Sheet1" unter "Microsoft Excel Objects". Ich habe das schon mal gemacht, aber normalerweise Dinge in ein Modul geschrieben. Könnte dies einen Unterschied machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage