tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VBAでの同時処理の回避方法
投稿日: 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」にかきかえたりしましたが、変化はありませんでした。)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。