ホームページ >データベース >mysql チュートリアル >Excel-VBA で SQL データベースにアクセスすると、「オブジェクトが閉じられているときは操作は許可されません」というメッセージが表示されるのはなぜですか?

Excel-VBA で SQL データベースにアクセスすると、「オブジェクトが閉じられているときは操作は許可されません」というメッセージが表示されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-01 09:20:12507ブラウズ

Why Am I Getting

Excel-VBA での SQL データベースへのアクセス: 接続文字列のトラブルシューティング

Excel-VBA から SQL データベースにアクセスすると、次のような問題が発生する可能性があります。実行時エラー:「オブジェクトが閉じられているときは操作は許可されません。」レコードセットから Excel 範囲にデータをコピーしようとしたとき。このエラーは、多くの場合、接続文字列またはレコードセットの状態に問題があることを示します。

この問題の考えられる原因の 1 つは、接続文字列の指定が正しくないことです。データベース名や必要な認証情報など、必要なパラメータがすべて指定されていることを確認してください。元のコード スニペットで指定された接続文字列には、接続先のデータベースを指定する初期カタログ パラメーターがありません。

初期カタログ パラメーターを接続文字列に追加し、より簡単な方法で SQL ステートメントを実行します。 (ADODB.Command オブジェクトではなく) 直接的に問題を解決できます。以下の改訂されたコードには、必要な変更が含まれています:

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

以上がExcel-VBA で SQL データベースにアクセスすると、「オブジェクトが閉じられているときは操作は許可されません」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。