PR

Accessファイル共有で発生するロック問題を防ぐ方法【初心者向け】

Access
スポンサーリンク

こんにちは、なかぜんです。

Accessファイルを共有フォルダに置いて複数人で使っていると、ある日突然こんなメッセージが…

「ほかのユーザーが排他モードで開いているため、ファイルを開けません」

このような「ロックトラブル」、経験ありませんか? 業務の現場では意外と多く、困ってしまう人も多いんです。

今回は、そんなロックトラブルを未然に防ぐための対策と、実際に使えるVBAコードをご紹介します。Access初心者の方にも分かりやすく、丁寧に解説していきますので、ぜひ最後までお読みください。

スポンサーリンク

なぜAccessでロックが起きるの?

Accessはファイル共有に弱い?

Accessは、1つのファイル(.accdbや.mdb)にデータも画面も全部入っているので、同時に複数人が使うと「競合」が起きやすいです。

特に「フォームの設計を開きっぱなしにしていた」や「排他モードで開いてしまった」などの操作が原因で、ロックファイル(.laccdb)が残ったままになることもあります。

ロックの主な原因

  • ファイルを「排他モード」で開いているユーザーがいる
  • ネットワーク環境の不安定さでロックファイルが残る
  • Accessの異常終了や強制終了によるファイル破損

ロック対策の基本:分割&ショートカット

テーブルとアプリを分ける「分割設計」

Accessを安全に複数人で使うための基本が「分割設計」です。

  • バックエンド(BE):テーブルだけのファイル
  • フロントエンド(FE):フォームやクエリ、レポート、VBAを持つファイル

バックエンドは共有フォルダに置き、フロントエンドは各ユーザーのローカルに配置することで、ロックのリスクを減らせます。

ショートカットで「排他モード」を避ける

Accessを開くときに/excl(排他)ではなく/shared(共有)モードで開くようにショートカットを設定しましょう。

"C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE" "Z:\共有\業務.accdb" /shared

この設定で、他の人も安心して同時に使えるようになります。

VBAで「二重起動防止」をする方法

次に、Accessファイルがすでに開かれている場合に、さらに開こうとしたとき警告を出すVBAの例を紹介します。

コード例:二重起動チェック

Private Function IsAlreadyOpened() As Boolean
    Dim strDBName As String
    Dim objAccess As Object

    strDBName = CurrentDb.Name

    On Error Resume Next
    Set objAccess = GetObject(strDBName)
    If Not objAccess Is Nothing Then
        IsAlreadyOpened = True
    Else
        IsAlreadyOpened = False
    End If
    Set objAccess = Nothing
End Function

この関数をフォームのOpenイベントなどに組み込めば、すでに開かれているかを検知し、処理を止めたりメッセージを出すことができます。

実装例:起動時のチェック

Private Sub Form_Load()
    If IsAlreadyOpened() Then
        MsgBox "すでに開いています。処理を終了します。", vbExclamation
        DoCmd.Quit
    End If
End Sub

注意点やよくあるミス

  • フロントエンドを共有フォルダに置くとロックしやすくなる
  • Accessをタスクマネージャーで強制終了するとロックファイルが残る
  • ロックファイル(.laccdb)を手動で削除するときは注意が必要(必ず誰も使っていないときに)

応用ポイント:多人数環境ではAccess以外も検討

もし、同時に10人以上で使うような業務なら、AccessではなくSQL Server + Access(ODBCリンク)や、SharePointリスト連携、PowerAppsなどのクラウド環境も選択肢です。

とはいえ、少人数や小規模チームなら今回紹介したロック対策だけでも十分効果的です!

まとめ:ファイル共有の基本をおさえよう!

今回は、Accessファイルを複数人で使うときに避けられない「ロック問題」について、その原因と対策を紹介しました。

  • 分割設計+ローカル実行でロック回避
  • 排他モードを避けるショートカット設定
  • VBAで二重起動チェックを組み込む

少しの工夫で、大きなトラブルを防ぐことができます。

次回は「Accessの分割設計のやり方」をもう少し詳しく紹介していこうと思っています。ぜひお楽しみに!

それでは、なかぜんでした〜。

\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング