Heim >Datenbank >MySQL-Tutorial >Warum erhält mein Excel-VBA-Code beim Kopieren von Daten aus einem SQL-Recordset den Fehler „3704: Vorgang ist beim Schließen des Objekts nicht zulässig'?
Fehlerbehandlung in Excel-VBA für den SQL-Datenbankzugriff
Beim Zugriff auf eine SQL-Datenbank aus Excel-VBA tritt beim Versuch häufig ein Problem auf zum Kopieren von Daten aus einem Recordset in eine Excel-Tabelle, was zum Laufzeitfehler 3704 führt: „Vorgang ist nicht zulässig, wenn das Objekt vorhanden ist.“ geschlossen.“
Ursache:
Die Fehlermeldung deutet darauf hin, dass das in der Methode „CopyFromRecordset“ referenzierte Recordset (objMyRecordset) geschlossen wurde. Dies kann auftreten, wenn die Verbindung zur Datenbank verloren geht oder wenn das Recordset explizit vorzeitig geschlossen wird.
Lösung:
Um dieses Problem zu beheben, stellen Sie sicher, dass die Datenbankverbindung stabil ist und Das Recordset bleibt während des gesamten Datenabrufvorgangs geöffnet. Hier ist ein überarbeiteter VBA-Code:
Sub GetDataFromADO() 'Declare variables' Set objMyConn = New ADODB.Connection Set objMyRecordset = New ADODB.Recordset Dim strSQL As String 'Open Connection' objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;User ID=abc;Password=abc;" objMyConn.Open 'Set and Execute SQL Command' strSQL = "select * from myTable" 'Open Recordset' Set objMyRecordset.ActiveConnection = objMyConn objMyRecordset.Open strSQL 'Copy Data to Excel' ActiveSheet.Range("A1").CopyFromRecordset objMyRecordset 'Close recordset and connection (optional, to ensure no open object handles) objMyRecordset.Close objMyConn.Close End Sub
Achtung:
Es ist wichtig zu beachten, dass die „Close“-Methoden (für Recordset- und Verbindungsobjekte) nach den Daten verwendet werden sollten -Der Abrufvorgang ist abgeschlossen, um mögliche Fehler zu vermeiden. Es ist jedoch nicht unbedingt erforderlich, diese Objekte explizit zu schließen, da sie automatisch geschlossen werden sollten, wenn die Unterroutine beendet wird.
Das obige ist der detaillierte Inhalt vonWarum erhält mein Excel-VBA-Code beim Kopieren von Daten aus einem SQL-Recordset den Fehler „3704: Vorgang ist beim Schließen des Objekts nicht zulässig'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!