Liebe/-r Experte/-in,
Hallo zusammen,
ich nutze folgendes Script in Excel (2003), um Daten aus einer Access-DB (2003) auszulesen und in Excel in eine Zelle zu schreiben:
Sub ADO_Recordset_komplett_uebernehmen()
Application.ScreenUpdating = False
Dim con As ADODB.Connection
Dim datei As String
Dim fld As Field
Dim rs As ADODB.Recordset
Dim spalte As Long
Dim accTab As String
Dim ws As Worksheet
Dim zeile As Long
Dim s As String
‚Den Ausgangswert für die Suche in die Variable s schreiben
s = Range(„D2“).Value
’ (0) SQL-String
‚accTab = "SELECT DOMAIN FROM x86Intel WHERE INVENTARNR = " & "‘" & s & "‘"
accTab = "SELECT DOMAIN FROM x86Intel WHERE INVENTARNR = " & s
’ (1) Verbindung zur Datenbank herstellen
datei = „F:\Daten\Access\LSM_NEU.mdb“
Set con = New ADODB.Connection
con.Open ConnectionString:= _
„Provider=Microsoft.Jet.OLEDB.4.0;“ & _
„Data Source=“ & datei
’ (2) Recordset erstellen
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open Source:=accTab, _
ActiveConnection:=con, _
CursorType:=adOpenKeyset, _
LockType:=adLockReadOnly, _
Options:=adCmdTableDirect
’ (3a) Tabellenblatt selektieren
Set ws = ThisWorkbook.Worksheets(„Tabelle1“)
’ (3b) Stelle angeben, an die der neue Wert in Excel übergeben werden soll
ws.Range(„D20“).CopyFromRecordset _
Data:=rs, _
MaxRows:=ws.Rows.Count - 1, _
MaxColumns:=ws.Columns.Count
’ (4) Recordset und Verbindung schließen
rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
Application.ScreenUpdating = True
End Sub
Dieses makro funktioniert einwandfrei, sobald die Access-DB „eigenständig“ ist, also eigene Tabellen besitzt. Sobald aber eine Tabelle eine Verknüpfung ist (in meinem Fall eine Verknüpfung zu einer Oracle-DB) funktioniert das Makro nicht mehr und ich erhalte an der Stelle:
’ (2) Recordset erstellen
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open Source:=accTab, _
ActiveConnection:=con, _
CursorType:=adOpenKeyset, _
LockType:=adLockReadOnly, _
Options:=adCmdTableDirect
eine Fehlermeldung:
Laufzeitfehler
Die Methode ‚Open‘ für das Objekt ‚_Recordser‘ ist fehlgeschlagen.
Hat jemand eine Ahnung warum das so ist?
Ich habe keinerlei Erklärung dafür.
Für eine Hilfe wäre ich sehr dankbar.
Gruß,
Jochen