2

Excelでは、ADODB接続を使用してレコードセットを作成し、次のように独自のブックのワークシートからデータを取得しています。

Public Sub test()
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim k As Variant

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
       "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
        "Extended Properties=""Excel 12.0;HDR=No;IMEX=1;Readonly=False"";"

    strSQL = "SELECT F1 FROM [Workbench$];"

    rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic
    rst.MoveFirst

    While Not rst.EOF
        rst("F1") = "NewValue"
        rst.Update
        rst.MoveNext
    Wend

End Sub

ただし、コードの実行中にエラーが発生します。

実行時エラー'-2147217911(80040e09)':
更新できません。データベースまたはオブジェクトは読み取り専用です。

開いたブックの許可を確認しましたが、問題ありません(すべてのユーザーのフルコントロールアクセス)。

私はここで何を間違えましたか?

4

2 に答える 2

5

Use IMEX=0 で問題を解決しました

于 2014-01-24T07:29:18.830 に答える
0
rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic

に置き換えます

rst.Open strSQL, cnn, 1, 3
于 2013-04-01T02:06:26.130 に答える