苦労して作ったシステムをコピペされたら面白くないですよね。
少なくともデータは覗かれたり改ざんされないように管理しなくてはなりません。
Access で作ったシステムを保護する方法を考えてみました。
【1】AutoExec マクロでリボンを非表示にする
Access の起動時に実行するマクロ(AutoExec)を作成し、マクロ内でリボンを非表示にします。
(1)標準モジュールにFunction Codeを作成する。
Public Function TipsExec()
DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボン非表示
End Function
(2)AutoExec マクロを作成する。
主メニューの「マクロ」を開き、「プロシジャーの実行」を選択してFunction名「TipsExec」を登録します。マクロ名は、必ず「AutoExec」です。

Access file を起動すると、AutoExec マクロが実行されます。
リボンを非表示にするコマンドが実行され、右のような何も表示されない画面になります。

※この画面はナビゲーションも非表示にしています。
この状態では何もできません。
一旦閉じてからShiftキーを押下したまま開くと、下記MENUを開くことができます。
システムの保護の投稿でこれを書いたらマズイですが、開発者のために。。。

【2】パスワードの入力を求めるフォームを作成する
<仕様>
➀ ログイン画面を作成して、テキストボックスとコマンドボタンを作成する。
➁ テキストボックスはパスワードの入力用で入力値は「*」に変換する。
➂ ログインボタンの押下でパスワードをチェックし、OKならメニューを開く。
➃ キャンセルボタンが押下された場合はAccessを閉じて終了する。
➄ 表示ボタンはパスワードの入力値の、表示、非表示を切り替える。
(1)ログイン画面の作成
テキストボックスの定型入力に「パスワード」を設定します。入力値は「*」に変換されます。

(2)イベントプロシジャーの作成
➀ パスワードテキストのフォーカス喪失時
ログインボタンにカーソルを移動します。(ログインボタンはフッター領域なので自動で移動しません)
Private Sub パスワード_Exit(Cancel As Integer)
Me.ログイン.SetFocus
End Sub
➁ キャンセルボタンのクリック時
ログイン画面を閉じてからAccess を終了します。
Private Sub キャンセル_Click()
DoCmd.Close 'ログイン画面を閉じる
Quit 'Accessを終了する
End Sub
➂ ログインボタンのクリック時
入力されたパスワードが設定しているパスワードと一致すれば、現在開いている「longin」画面を閉じてから、システムの開始画面を開きます。
この例では、ログインパスワードはVBA内に固定値でもっています。
Private Sub ログイン_Click()
If Me.パスワード = "******" Then '****** は固定値
DoCmd.Close 'ログイン画面を閉じる
DoCmd.OpenForm "システムメニュー", acNormal 'MENU画面を開く
Else
MsgBox ("パスワードが間違っています。")
End If
End Sub
➃ 表示ボタンの標題を切り替える
パスワードテキストへの入力内容を確認するため、標題の文字を表示、非表示を切り替えます。
Private Sub 表示_Click()
If Me.パスワード.InputMask = "password" Then
Me.パスワード.InputMask = ""
Me.表示.Caption = "非表示"
Else
Me.パスワード.InputMask = "password"
Me.表示.Caption = "表示"
End If
End Sub
(3)AutoExecマクロに「login」フォームを開くコマンドを追加する
Public Function TipsExec()
DoCmd.ShowToolbar “Ribbon”, acToolbarNo ‘リボン非表示
DoCmd.OpenForm “login” ‘login フォームを開く
End Function
起動時にリボンを非表示にして、ログインフォームを表示しています。
【3】VBAコードを保護する
VBAウィンドウで、ツールメニューからオブジェクトのパスワードを登録します。

システムのログインパスワードはVBA内の固定値で持っておくと、これでログインパスワードが漏れることはありません。絶対とは言えませんが、このプロジェクトパスワードを解析するのは結構大変ですので、とりあえずはロックしておくと安心です。
【4】ナビゲーションウインドウを非表示にする
最後に主メニューの「ファイル」から「Accessオプション」を開きナビゲーションウインドウを非表示にします。Access file を起動すると「login」フォームのみが表示されます。


手動でAccessオプションを開くには、 ctrl キー +O(英文字オー)を押下します。
【5】隠しオブジェクトに設定する
ナビゲーションウィンドウからテーブル(データ)を非表示にしたい場合は、テーブルをクリックしてプロパティの「隠しオブジェクト」にチェックを入れます。薄く表示される場合は「隠しオブジェクトの表示」をOFFにします。


ナビゲーションウインドウの空白の領域を右クリックで開きます。
完璧にAccessシステムを保護するのは無理かもしれません。しかし、盗難防止には鍵が一つより二つの方が有効であるように、何らかの対策は講じられた方がいいと思います。
参考になれば幸いです。
リボンを再表示するコマンドは DoCmd.ShowToolbar “Ribbon”, acToolbarYes です。