1

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
4

2 に答える 2