PR

Accessでユーザー別に画面を切り替える方法|VBAでできるシンプルな制御術

Access
スポンサーリンク

こんにちは、Accessブロガーの「なかぜん」です。

「ユーザーによって見せる画面を変えたいけど、どうすればいいの?」
こんなふうに悩んだこと、ありませんか?

たとえば、管理者には詳細な操作画面を、一般ユーザーには入力だけの画面を表示したい——そんなニーズに応えるのが「ユーザー別画面制御」です。

この記事では、Access初心者の方でも実践できるように、ログインユーザーの判別から、フォームの切り替え方、注意点や応用まで、丁寧に解説していきます!

スポンサーリンク

ユーザー別画面制御って何をするの?

ざっくり言えば、「誰が使っているかを判別して、その人に合った画面(フォーム)を表示する仕組み」です。

こんなときに便利!

  • 管理者だけに「設定フォーム」を表示
  • パート社員には「入力画面」のみ見せたい
  • 社内の担当者ごとに使う画面が違う

Accessはデータベースなので、ユーザー管理の仕組みと組み合わせることで、より安全で実用的なアプリが作れます。

ユーザーごとにフォームを切り替える方法

ステップ1:ユーザー一覧テーブルを作ろう

まずはユーザー情報を管理するテーブルを用意します。

テーブル名:T_ユーザー一覧
フィールド:
・ユーザー名(テキスト型)
・権限レベル(テキスト型:例「管理者」「一般」)

ここに、Accessを使う人の名前と、それぞれの権限を登録しておきます。

ステップ2:現在のユーザーを取得する

AccessにはWindowsログイン名を取得する関数があります。以下の関数をモジュールに作成してください。

Function GetUserName() As String
    GetUserName = Environ("USERNAME")
End Function

この関数を使えば、起動している人のWindowsユーザー名が取得できます。

ステップ3:起動時にユーザーを判別してフォームを出し分け

「AutoExecマクロ」や「起動フォーム」に以下のようなVBAを設定します。

Private Sub Form_Load()
    Dim strUser As String
    Dim strRole As String

    strUser = GetUserName()

    ' ユーザー情報を参照して権限レベルを取得
    strRole = DLookup("権限レベル", "T_ユーザー一覧", "ユーザー名='" & strUser & "'")

    Select Case strRole
        Case "管理者"
            DoCmd.OpenForm "F_管理者画面"
        Case "一般"
            DoCmd.OpenForm "F_一般画面"
        Case Else
            MsgBox "このユーザーは登録されていません。", vbExclamation
            DoCmd.Quit
    End Select

    ' このフォームは隠しておく
    Me.Visible = False
End Sub

ポイント解説:
GetUserName関数でログインユーザーを取得します。
DLookup関数で、ユーザー一覧テーブルから該当ユーザーの権限レベルを取得します。
– 権限レベルに応じてフォームを出し分けています。

よくあるミスと注意点

  • ユーザー名の入力ミス:Windowsのユーザー名とAccessのユーザー一覧が一致しないと判別できません。
  • 権限フィールドが空:DLookupでエラーが出ることがあります。
  • フォームを開いたあと、元のフォームを閉じない:不要なフォームが裏で残り、メモリ負荷になります。

応用ポイント:フォームを1つにして中身を変える

中級者向けのテクニックとして、1つのフォームを使って、表示項目やボタンを制御する方法もあります。

たとえば、以下のようにボタンの表示・非表示を切り替えます:

If strRole = "管理者" Then
    Me.btn設定.Visible = True
Else
    Me.btn設定.Visible = False
End If

このようにすれば、フォームを複数作る手間が省け、保守も簡単になります。

まとめ:ユーザー制御で業務効率がアップ!

今回は、Accessでユーザー別に画面を切り替える方法をご紹介しました。

この記事で学べたこと:

  • ユーザー一覧テーブルで権限を管理する方法
  • ログインユーザーを取得するVBA
  • フォームの切り替えロジック

「Accessってここまでできるんだ!」と思っていただけたら嬉しいです。

次のステップとしては、ログイン画面の自作ユーザー別の操作ログ記録などもおすすめです。

今後も業務に役立つAccess活用術をお届けしますので、ぜひブックマークしておいてくださいね!

楽天Kobo電子書籍ストア
¥2,838 (2025/05/13 21:09時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング