編集不可設定してあるAccessファイルでもshiftキーを押しながら開くと編集ができますよね。
納品先などでshiftキーの方法が知られていた場合、改変の可能性もあります。
この記事では、Accessでパスワードを入力しないと編集ができないようにする方法と手順を紹介します。
shiftを押しながらAccessを開いても編集不可にする方法
Accessのプロパティに”AllowBypassKey”があります。
このプロパティに”True”か”False”を設定することで、「shiftキーを押しながら起動で編集可能」の機能を不可にすることができます。
- True:shiftキーを押しながら起動で編集可能機能を有効
- False:shiftキーを押しながら起動で編集可能機能を無効
shiftを押しながらAccessを開いても編集不可にする手順
accessファイルを開き、パスワード入力用のフォームを作成
ここでは、パスワードを入力するテキストコントロールと、ボタンのみを配置します。
コードエディタを開き、パスワード設定処理のコードを書く
コードエディタを開く
参照設定
DAOに関して、32bitと64bitで選択するものが違うので注意
プログラミング
パスワードは固定値で「pass」としています。
ソースの全文は画像の次に記載してあります。
プログラムの全文
Option Compare DatabaseOption Explicit'''画面を開くときPrivate Sub Form_Open(Cancel As Integer) 'shiftキー起動編集機能を無効 Fnc_allowBypassKey FalseEnd Sub'''認証ボタンのクリック時Private Sub btn_Click() If txt.Value = "pass" Then 'shiftキー起動編集機能を有効 Fnc_allowBypassKey True '許可メッセージ MsgBox "編集を許可します。一旦AccessDBを閉じてください" Else 'shiftキー起動編集機能を無効 Fnc_allowBypassKey False End IfEnd Sub'--------------------------------------'引数'val:allowBypassKeyプロパティに適用する値(True or False)'--------------------------------------Function Fnc_allowBypassKey(val As Variant) '変数を定義 Dim cdb As DAO.Database Dim pro As DAO.Property '自分自身のDBを設定 Set cdb = CurrentDb 'エラーが発生しても無視する On Error Resume Next 'AllowBypassKeyを初期化 cdb.Properties.Delete "AllowBypassKey" On Error GoTo 0 'AllowBypassKeyを設定 Set pro = cdb.CreateProperty("AllowBypassKey", dbBoolean, val, True) 'DBに適用 cdb.Properties.Append proEnd Function
accessファイルのメニューバーから「ファイル」を選択
「オプション」を選択
「Accessのオプション」ダイアログが開いたら、メニューから「現在のデータベース」を選択
下記の手順で設定値を変更する
- ”アプリケーションオプション”のカテゴリから”フォームの表示(D)”をパスワード入力用のフォームに設定
- ”ナビゲーション”のカテゴリから「ナビゲーション ウィンドウを表示する(N)」のチェックをOFF
- ”リボンとツールバーのオプション”のカテゴリから「すべてのメニューを表示する(M)」のチェックをOFF
設定完了!Accessファイルを閉じる
パスワード設定確認方法
shiftキーを押しながらパスワード設定したAccessファイルを開く
パスワードを入力し、認証ボタンをクリック
パスワード解除のメッセージを表示される
メッセージに従い、Accessファイルを閉じてから、再び、shiftキーを押しながらパスワード設定したAccessファイルを開く
認証画面が開かずに、Accessファイル編集できるモードで起動したら成功です。
おわり
- わかりやすく解説!AccessでSQLserverのリンクテーブルを追加する方法
- わかりやすく解説!Accessの編集不可の方法(2パターン)
- わかりやすく解説!shiftを押しながらAccessを開いても編集不可にする方法
関連記事
「本業の給料だけでは、将来が少し不安…」「自分の技術、会社の外で通用するんだろうか?」「新しいスキルを身につけたいけど、学ぶだけじゃなく実践で使ってみたい」 もしあなたがシステムエンジニア(SE)として、このような思いを少しで[…]












