Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens le message « L'opération n'est pas autorisée lorsque l'objet est fermé » lors de l'accès à une base de données SQL dans Excel-VBA ?

Pourquoi est-ce que j'obtiens le message « L'opération n'est pas autorisée lorsque l'objet est fermé » lors de l'accès à une base de données SQL dans Excel-VBA ?

Mary-Kate Olsen
Libérer: 2025-01-01 09:20:12
original
481 Les gens l'ont consulté

Why Am I Getting

Accès à la base de données SQL dans Excel-VBA : dépannage de la chaîne de connexion

En accédant à une base de données SQL à partir d'Excel-VBA, les utilisateurs peuvent rencontrer les problèmes suivants erreur d'exécution : "L'opération n'est pas autorisée lorsque l'objet est fermé." lorsque vous tentez de copier des données du jeu d'enregistrements vers une plage Excel. Cette erreur indique souvent un problème avec la chaîne de connexion ou l'état du jeu d'enregistrements.

Une cause potentielle de ce problème est la spécification incorrecte de la chaîne de connexion. Assurez-vous que tous les paramètres nécessaires sont fournis, y compris le nom de la base de données et toutes les informations d'identification requises. La chaîne de connexion fournie dans l'extrait de code d'origine ne contient pas le paramètre Initial Catalog, qui spécifie la base de données à laquelle se connecter.

En ajoutant le paramètre Initial Catalog à la chaîne de connexion et en utilisant une méthode plus simple pour exécuter l'instruction SQL directement (par opposition à un objet ADODB.Command), le problème peut être résolu. Le code révisé ci-dessous inclut les modifications nécessaires :

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 Excecute SQL Command'
        strSQL = "select * from myTable"

    'Open Recordset'
        Set objMyRecordset.ActiveConnection = objMyConn
        objMyRecordset.Open strSQL            

    'Copy Data to Excel'
        ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)

End Sub
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal