タイトル | : VBAでの同時処理の回避方法 |
記事No | : 10416 |
投稿日 | : 2011/01/26(Wed) 16:02 |
投稿者 | : よすみ |
ネットワーク上にデータベースとして扱うエクセルファイル(A)を置き、 データの参照や登録を行うエクセルファイル(B)をVBAで作成し、 Bのコピーを複数の端末に配布しました。
複数の端末から、同時にAにアクセスした場合、 読取専用でOpenしてしまい、画面上にAが立ち上がってきます。
単品で動かしたときは、Aが画面に立ち上がることはありませんし、 読取専用で開かれてしまった場合、 当たり前ですが、更新を反映できず困っています。
そして、読取専用のAファイルを閉じても プロジェクトエクスプローラに残っていて、 タスクマネジャーからは消えているんですが、 以降の操作はすべて残った読取専用ファイルにアクセスしているようです。
他で開いている場合は、エラーで返す等、Aの状況を知る方法はないでしょうか? あるいは、回避するいい方法があれば教えていただきたいのですが…。
エクセルを開けるときは、 参照する時も、更新するときも 以下のようなプログラムでオープンしています。
Sub Sub_Test() Dim oCn As Object Dim oRs As Recordset Dim SQL As String Set oCn = CreateObject("ADODB.Connection") Set oRs = CreateObject("ADODB.Recordset") oCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sデータソース & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
SQL = "SELECT * FROM [Testテーブル$] " oRs.Open SQL, oCn, adOpenStatic, adLockOptimistic, adCmdText ※※※ここで参照・更新処理をかきこんでます。
oRs.Close oCn.Close Set oRs = Nothing Set oCn = Nothing
End Sub
(「adLockOptimistic」の部分を参照の場合は 「adLockReadOnly」にかきかえたりしましたが、変化はありませんでした。)
|