エクセルでVBAによってSQLでUPDATEを実行したいのですが
以下のVBAコードでマクロを実行した所「オブジェクトが閉じている間は操作が許可されません」というエラーが出てしまいました。
VBA
1Sub ボタン1_Click() 2Dim adoCon As Object ' ADOコネクション 3 Dim adoRs As Object ' ADOレコードセット 4 Dim SQL As String ' SQL 5 Dim i As Long 6 7 ' ADOコネクションを作成 8 Set adoCon = CreateObject("ADODB.Connection") 9 10 On Error GoTo ErrorTrap 11 12 ' ODBC接続 13 adoCon.Open _ 14 "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _ 15 " SERVER=localhost;" & _ 16 " DATABASE=abc;" & _ 17 " UID=root;" & _ 18 " PWD=root;" 19 20 MsgBox "DB接続成功" 21 22 ' SQL文 23SQL = "UPDATE `mail_db` SET `mail_level` = '10' WHERE `mail_db`.`mail_id` = 10" 24 25 ' SQLの実行 26 Set adoRs = adoCon.Execute(SQL) 27 28 ' レコードセット内の全ての行の読込が 29 ' 終了するまで処理を繰り返す 30 i = 2 31 Do Until adoRs.EOF 32 Cells(i, 1) = adoRs!mail_id 33 Cells(i, 2) = adoRs!mail_from_name 34 Cells(i, 3) = adoRs!mail_subject 35 'Cells(i, 4) = Format(adoRs!addDate, "yyyy/mm/dd") 36 37 i = i + 1 38 ' 次の行に移動する 39 adoRs.MoveNext 40 Loop 41 42 ' 解放処理 43 adoRs.Close 44 adoCon.Close 45 Set adoRs = Nothing 46 Set adoCon = Nothing 47Exit Sub 48 49ErrorTrap: 50 Set adoRs = Nothing 51 Set adoCon = Nothing 52 MsgBox (Err.Description) 53End Sub
調べてみるとSQLを複数回呼び出していることが原因とか聞いたり、「SET NOCOUNT ON」と記入すれば良いとか聞いたので記述してみたのですが解決できませんでした。
この「SET NOCOUNT ON」を記述することで解決できるのであれば上のコードへの挿入箇所、またはそれ以外のコードの記述方法等があれば教えていただきたいです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/26 16:37