VBA ADODB.Recordsetでエラー「3219 このコンテキストで操作は許可されてません」が発生した場合の対処法

  • 作成日 2022.10.03
  • vba
VBA ADODB.Recordsetでエラー「3219 このコンテキストで操作は許可されてません」が発生した場合の対処法

VBAで、ADODB.Recordsetを利用時にエラー「3219 このコンテキストで操作は許可されてません」が発生した場合の対処法を記述してます。

環境

  • OS windows10 64bit

エラー全文

以下のコードで発生

Set adoRs = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクト

i = 1

With adoRs

    .Open "Test", adoCn, 1, 3 'レコードセットを開く(1:キーセットカーソル  3:レコードごとの共有的ロック)

    Do While Cells(i, 1).Value <> ""
    
        .AddNew
            !ID = Cells(i, 1).Value
            !Name = Cells(i, 2).Value
        
        i = i + 1
        
    Loop

    .Close 'レコードセットのクローズ

End With

' レコードセットのクローズ
If Not adoRs Is Nothing Then
    If adoRs.State = 1 Then adoRs.Close ' 開かれていればクローズ
    Set adoRs = Nothing
End If

エラー

原因

「.Update」をしていなかったため

対処法

以下のように「 .Update 」を使用する

Do While Cells(i, 1).Value <> ""

    .AddNew
        !ID = Cells(i, 1).Value
        !Name = Cells(i, 2).Value
    .Update
    
    i = i + 1
    
Loop