Excel ワークシートのデータを共有 Access データベース (Access 2010) に追加するマクロを作成しました。
マクロを実行すると、セルの値が取得され、Access テーブルに 1 行として追加されます。私はそれを何度もテストしましたが、データの追加で素晴らしい仕事をしています。
問題は、マクロの実行が完了したときに発生します。データベースをクリックすると、すぐにロックされ、データベースを開くことができなくなります。これを回避する唯一の方法は、VBA に移動してリセット ボタンを押すことです。何らかの理由で、これによりデータベースのロックが解除されます。
Access データベースに移動し、[オプション] > [クライアント設定] を [ロックなし] に設定しました。
ロックを止める方法はありますか?closeメソッドが接続を閉じて DB を解放しないのはなぜですか?
Dim Db As Database
Dim Rs As Recordset
Dim ws As DAO.Workspace
Dim Path As String
Path = "X:\EKTT-Log.accdb"
Set ws = DBEngine.Workspaces(0)
Set Db = ws.OpenDatabase(Path, _
False, False, "MS Access;") ' Learn more http://msdn.microsoft.com/en-us/library/office/ff835343.aspx
Set Rs = Db.OpenRecordset("Results Log", dbOpenTable, dbAppendOnly, dbPessimistic) ' Learn more http://msdn.microsoft.com/en-us/library/office/ff820966(v=office.14).aspx
' Log At a Glance
If Sheets(">>>>").Cells(15, "G") <> "" Then
Rs.AddNew
Rs.Fields("CTYHOCN") = CTYHOCN
Rs.Fields("eCommerce Manager") = eComMgr
Rs.Fields("Timestamp Start") = TimeStart
Rs.Fields("Timestamp Finish") = TimeFinish
Rs.Fields("Global Web Page") = Sheets(">>>>").Cells(15, "B")
Rs.Fields("Keyword Target") = Sheets(">>>>").Cells(15, "G")
Rs.Fields("Est Search Vol") = Sheets(">>>>").Cells(15, "H")
Rs.Fields("Title Tag") = Sheets(">>>>").Cells(15, "C")
Rs.Fields("Meta Description") = Sheets(">>>>").Cells(15, "E")
Rs.Update
Else
'
End If
' Close database & resume screenupdating
Rs.Close
Db.Close
ws.Close
Set Rs = Nothing
Set Db = Nothing
Set ws = Nothing
Application.ScreenUpdating = True