Excelで生成された結果を書き込むために、VBAを使用してMySQLに接続しようとしています。私はそれぞれ約100列を含む何千もの行を書く必要があります。ですから、結果を書き始める前にMySQLに接続するために別々のサブルーチンを作成してから、各行に対して「挿入」クエリを実行し、最後に接続を閉じる必要があります。VBAからMySQLへの接続、更新、クローズ
sub main
dbconnect
for i = 1 to 50000
dbupdate
next i
dbclose
sub dbconnect()
Dim cn as ADODB.connection
Set cn = New ADODB.Connection
cn.open "Driver .............." (usual stuff)
sub dbupdate()
dim sqlstr as string
sqlstr = "insert into table " .... (some query to write the results in a table)
cn.execute sqlstr
sub dbclose()
cn.close
cn = nothing
は、しかし、私のマクロは、それがDBUPDATEまたはDBCLOSEサブルーチンに表示されたときに、CNを理解していないようです:
私は私が私のメインプログラムから呼び出しています以下の潜水艦を作成しました。 dbconnectで設定した接続は他のサブルーチンからアクセスできないようです。マクロはdbupdateのcn.execute sqlstrで次のエラーで停止します。ランタイムエラー91:オブジェクト変数またはブロック変数メモセット。
私はこの作業を行う方法はありますか?
多くの感謝!
ありがとうございました。あなたが提案したように、dbconnectの前にpublic変数として接続を宣言しましたが、同じエラーが発生しました。マクロはdbupdateのcn.execute sqlstrで次のエラーで停止します。ランタイムエラー91:オブジェクト変数またはブロック変数メモセット。 – KMLN
エラーで終了しない場合、cn.openが最初に成功したかどうかをテストします。 cn.openが実際の問題である可能性があります。 –