1
エクセルでデータベースにアクセスできますが、2度目にアクセスしようとすると問題が発生します。私の後ろに何かが残っているように見えますが、私は何を理解していません。3027 "Can not update。データベースまたはオブジェクトが読み取り専用です。"エクセルからテーブルを作成した後
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim strInput As String
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
strInput = Sheets("base_pivot").Range("I4").Value
'I get the input for the parameter from my sheet base_pivot on the cell I4
With con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "C:\cmo_accounting\CMO_accounting.mdb"
End With
With cmd
.ActiveConnection = con
.CommandText = "mk_edu_ana_invoices"
.CommandType = adCmdStoredProc
.Parameters.Append cmd.CreateParameter("[input_code_ana]", adChar, adParamInput, 5)
.Parameters("[input_code_ana]") = strInput
End With
cmd.Execute
con.Close
Set cmd = Nothing
Set prm = Nothing
Set con = Nothing
これは初めて使用したときに動作し、Excelファイルを再度開くとすぐに再び動作します。それは、Excelが閉じられたときに接続が閉じられているようです。
私が見つけたことのいくつかは、どちらかが違いを生むかどうかはわかりません。どこで 'strPath'を定義しましたか? ( 'option explicit'を使うとこれらの問題を避けることができます)。また、Range( "I4:I4") 'は単純に' .Range( "I4")になります。 – CallumDA
ちょっと、strPathの変更を行いました。範囲I4の変更を行います。ありがとう! –
このマクロ(サブまたは関数)はどこにあり、どのようにトリガーされていますか?ワークブックの別の場所に別のデータベース接続がありますか? – Parfait